Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

LongMuonFinder.h

Go to the documentation of this file.
00001 #ifndef LongMuonFinder_H
00002 #define LongMuonFinder_H
00003 
00004 #include "NueAna/ParticlePID/ParticleFinder/Managed/ClusterManager.h"
00005 #include "NueAna/ParticlePID/ParticleFinder/Particle3D.h"
00006 #include "NueAna/ParticlePID/ParticleFinder/Chain.h"
00007 #include <vector>
00008 #include "Conventions/Detector.h"
00009 
00010 class LongMuonFinder
00011 {
00012         public:
00013         
00014                 LongMuonFinder(Detector::Detector_t d);
00015                 ~LongMuonFinder();
00016                 
00017                 //find a long muon particle, returning 0 if none found
00018                 int FindLongMuon(Managed::ClusterManager *cm);
00019 
00020                 
00021                 Particle3D* GetParticle3D(){if(foundparticle)return foundparticle3d;return 0;};
00022                 Chain * GetChain(int view){if(foundparticle){if(view==2)return chain_u;if(view==3)return chain_v;}return 0;};
00023         
00024         
00025                 int FoundSingleViewLongMuon(){return single_view_long_muon;};
00026         
00027         private:
00028                 //we want to check the found chain to make sure that it is muon-like    
00029                 int CheckChainQuality(Chain *c, int view, int partialcount);
00030 
00031                 //find a muon chain in a given view
00032                 Chain * FindMuonChain(Managed::ClusterManager *cl, int view);
00033         
00034                 void Reset();   
00035                                 
00036                 //attempt to make a particle3d from the found chains
00037                 void MakeParticle3D();
00038                 
00039                 void AbsorbMuonClusters(Chain *c,int view,double past_z);
00040                 void RemoveNonMuonEnergy(Chain *c,int view,double past_z);
00041 
00042                 //take a chain in each view and extrapolate 
00043                 //  how many hits in each view are in the partially instrumented region
00044                 std::pair<int,int> CountInPartiallyInstrumentedRegion(Chain *viewU, Chain *viewV);
00045 
00046                 static Particle3D * foundparticle3d;
00047                 int foundparticle;
00048                 static Chain * chain_u;
00049                 static Chain * chain_v;
00050                 
00051                 void DumpParticle3D();
00052                         
00053                 Managed::ClusterManager *cluster_manager;
00054                 
00055                         
00056                 int single_view_long_muon;
00057                 double FindIsolationZ();
00058                 
00059                 //find the appropriate cluster in the chain, and then merge the other clusters into it!
00060                 //adjust the stored information about the cluster in the chain as well!
00061                 void MergeChainClusters(Chain * ch, std::vector<int> *clusters);
00062 
00063                 int CheckChainOverlap(Chain * chain_u, Chain * chain_v, double isolation_z);
00064                 void ClearFrontVertex(Chain * chain_u, Chain * chain_v);
00065                 Detector::Detector_t detector;
00066         
00067                 int IsPartiallyInstrumented(double t, double z, int view);
00068         
00069 };
00070 
00071 #endif
00072 

Generated on Mon Feb 15 11:06:53 2010 for loon by  doxygen 1.3.9.1