CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_4_1_8_patch9/src/RecoMuon/MuonSeedGenerator/src/MuonSeedCreator.h

Go to the documentation of this file.
00001 #ifndef RecoMuon_SeedGenerator_MuonSeedCreator_H
00002 #define RecoMuon_SeedGenerator_MuonSeedCreator_H
00003 
00016 #include "TrackingTools/TrajectoryState/interface/TrajectoryStateOnSurface.h"
00017 #include "DataFormats/TrajectorySeed/interface/TrajectorySeed.h"
00018 #include "RecoMuon/TransientTrackingRecHit/interface/MuonTransientTrackingRecHit.h"
00019 
00020 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00021 
00022 #include <vector>
00023 
00024 class RecHit;
00025 class BoundPlane;
00026 class GeomDet;
00027 class MagneticField;
00028 class MuonTransientTrackingRecHit;
00029 
00030 class MuonSeedCreator {
00031 
00032  public:
00033 
00034   typedef MuonTransientTrackingRecHit::MuonRecHitContainer SegmentContainer;
00035 
00037   explicit MuonSeedCreator(const edm::ParameterSet& pset);
00038 
00040   ~MuonSeedCreator();
00041 
00042   // Operations
00043 
00045   void setBField( const MagneticField* theField ){ BField = theField; };
00046 
00048   TrajectorySeed createSeed(int type, SegmentContainer seg, std::vector<int> layers, int NShower, int NShowerSeg );
00049 
00050 
00051   
00052  private:
00053 
00055   void estimatePtCSC(SegmentContainer seg, std::vector<int> layers, double& pt, double& spt);
00056 
00058   void estimatePtOverlap(SegmentContainer seg, std::vector<int> layers, double& pt, double& spt);
00059 
00061   void estimatePtDT(SegmentContainer seg, std::vector<int> layers, double& pt, double& spt);
00062 
00064   void estimatePtSingle(SegmentContainer seg, std::vector<int> layers, double& pt, double& spt);
00065 
00067   void estimatePtShowering(int& NShowers, int& NShowerSeg, double& pt, double& spt);
00068 
00070   void weightedPt(std::vector<double> ptEstimate, std::vector<double> sptEstimate, double& ptAvg, double& sptAvg);
00071 
00073   std::vector<double> getPt(std::vector<double> vParameters, double eta, double dPhi);
00074 
00076   double scaledPhi(double dphi, double t1);
00077 
00078   // Miminum and maximum pt momentum of a track  
00079   float theMinMomentum;
00080   float theMaxMomentum;
00081   float defaultMomentum;
00082 
00083   // Error on pt estimate which prevents weighted average from blowing up ( spt --> 0 )
00084   double sysError;
00085  
00086   // Flag for internal debugging
00087   bool debug;
00088  
00089   // Cache Magnetic Field for current event
00090   const MagneticField* BField;
00091 
00092   // seed parameters vectors
00093   std::vector<double> DT12;  
00094   std::vector<double> DT13;  
00095   std::vector<double> DT14;  
00096   std::vector<double> DT23;  
00097   std::vector<double> DT24;  
00098   std::vector<double> DT34;  
00099 
00100   std::vector<double> CSC01;
00101   std::vector<double> CSC12;
00102   std::vector<double> CSC02;
00103   std::vector<double> CSC13;
00104   std::vector<double> CSC03;
00105   std::vector<double> CSC14;
00106   std::vector<double> CSC23;
00107   std::vector<double> CSC24;
00108   std::vector<double> CSC34;
00109 
00110   std::vector<double> OL1213;
00111   std::vector<double> OL1222;
00112   std::vector<double> OL1232;
00113   std::vector<double> OL2213;
00114   std::vector<double> OL2222;
00115   
00116   std::vector<double> SME11;
00117   std::vector<double> SME12;
00118   std::vector<double> SME13;
00119   std::vector<double> SME21;
00120   std::vector<double> SME22;
00121   std::vector<double> SME31;
00122   std::vector<double> SME32;
00123   std::vector<double> SME41;
00124 
00125   std::vector<double> SMB10;
00126   std::vector<double> SMB11;
00127   std::vector<double> SMB12;
00128   std::vector<double> SMB20;
00129   std::vector<double> SMB21;
00130   std::vector<double> SMB22;
00131   std::vector<double> SMB30;
00132   std::vector<double> SMB31;
00133   std::vector<double> SMB32;
00134 
00135   // dphi scaling factors
00136 
00137   std::vector<double> CSC01_1;
00138   std::vector<double> CSC12_1;
00139   std::vector<double> CSC12_2;
00140   std::vector<double> CSC12_3;
00141   std::vector<double> CSC13_2;
00142   std::vector<double> CSC13_3;
00143   std::vector<double> CSC14_3;
00144   std::vector<double> CSC23_1;
00145   std::vector<double> CSC23_2;
00146   std::vector<double> CSC24_1;
00147   std::vector<double> CSC34_1;
00148 
00149   std::vector<double> DT12_1;
00150   std::vector<double> DT12_2;
00151   std::vector<double> DT13_1;
00152   std::vector<double> DT13_2;
00153   std::vector<double> DT14_1;
00154   std::vector<double> DT14_2;
00155   std::vector<double> DT23_1;
00156   std::vector<double> DT23_2;
00157   std::vector<double> DT24_1;
00158   std::vector<double> DT24_2;
00159   std::vector<double> DT34_1;
00160   std::vector<double> DT34_2;
00161 
00162   std::vector<double> OL_1213;
00163   std::vector<double> OL_1222;
00164   std::vector<double> OL_1232;
00165   std::vector<double> OL_2213;
00166   std::vector<double> OL_2222;
00167 
00168   std::vector<double> SMB_10S;
00169   std::vector<double> SMB_11S;
00170   std::vector<double> SMB_12S;
00171   std::vector<double> SMB_20S;
00172   std::vector<double> SMB_21S;
00173   std::vector<double> SMB_22S;
00174   std::vector<double> SMB_30S;
00175   std::vector<double> SMB_31S;
00176   std::vector<double> SMB_32S;
00177 
00178   std::vector<double> SME_11S;
00179   std::vector<double> SME_12S;
00180   std::vector<double> SME_13S;
00181   std::vector<double> SME_21S;
00182   std::vector<double> SME_22S;
00183 
00184 };
00185 #endif