CMS 3D CMS Logo

DeDxDiscriminatorProducer.h

Go to the documentation of this file.
00001 #ifndef TrackRecoDeDx_DeDxDiscriminatorProducer_H
00002 #define TrackRecoDeDx_DeDxDiscriminatorProducer_H
00003 // user include files
00004 #include "FWCore/Framework/interface/Frameworkfwd.h"
00005 #include "FWCore/Framework/interface/EDProducer.h"
00006 
00007 #include "FWCore/Framework/interface/Event.h"
00008 #include "FWCore/Framework/interface/MakerMacros.h"
00009 
00010 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00011 
00012 #include "RecoTracker/DeDx/interface/BaseDeDxEstimator.h"
00013 
00014 #include "Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h"
00015 #include "Geometry/TrackerGeometryBuilder/interface/StripGeomDetUnit.h"
00016 #include "Geometry/TrackerGeometryBuilder/interface/PixelGeomDetUnit.h" 
00017 
00018 #include "Geometry/CommonDetUnit/interface/GeomDetUnit.h"
00019 #include "Geometry/CommonDetUnit/interface/GeomDetType.h"
00020 #include "Geometry/CommonTopologies/interface/StripTopology.h"
00021 
00022 #include "DataFormats/GeometrySurface/interface/TrapezoidalPlaneBounds.h"
00023 #include "DataFormats/GeometrySurface/interface/RectangularPlaneBounds.h"
00024 #include "DataFormats/TrackerRecHit2D/interface/SiStripRecHit2D.h"
00025 #include "DataFormats/TrackerRecHit2D/interface/SiStripMatchedRecHit2D.h"
00026 
00027 #include "TrackingTools/PatternTools/interface/Trajectory.h"
00028 #include "TrackingTools/PatternTools/interface/TrajTrackAssociation.h"
00029 #include "TrackingTools/TrajectoryState/interface/TrajectoryStateOnSurface.h"
00030 
00031 
00032 
00033 #include "TFile.h"
00034 #include "TH1F.h"
00035 #include "TH2F.h"
00036 #include "TROOT.h"
00037 
00038 #include <ext/hash_map>
00039 
00040 
00041 using namespace edm;
00042 using namespace reco;
00043 using namespace std;
00044 using namespace __gnu_cxx;
00045 
00046 
00047 
00048 //
00049 // class declaration
00050 //
00051 
00052 class DeDxDiscriminatorProducer : public edm::EDProducer {
00053 
00054 public:
00055 
00056   explicit DeDxDiscriminatorProducer(const edm::ParameterSet&);
00057   ~DeDxDiscriminatorProducer();
00058 
00059 private:
00060   virtual void beginJob(const edm::EventSetup&) ;
00061   virtual void produce(edm::Event&, const edm::EventSetup&);
00062   virtual void endJob() ;
00063 
00064           bool IsFarFromBorder(TrajectoryStateOnSurface trajState, const uint32_t detid, const edm::EventSetup* iSetup);
00065         double ComputeChargeOverPath(const SiStripRecHit2D* sistripsimplehit,TrajectoryStateOnSurface trajState, const edm::EventSetup* iSetup,  const Track* track, double trajChi2OverN);
00066 
00067   // ----------member data ---------------------------
00068   edm::InputTag                     m_trajTrackAssociationTag;
00069   edm::InputTag                     m_tracksTag;
00070 
00071   bool usePixel;
00072   bool useStrip;
00073   double MeVperADCPixel;
00074   double MeVperADCStrip;
00075 
00076   const edm::EventSetup* iSetup_;
00077   const edm::Event*      iEvent_;
00078   const TrackerGeometry* m_tracker;
00079 
00080   TFile*       MapFile;
00081   std::string  MapFileName;
00082 
00083   double       MinTrackMomentum;
00084   double       MaxTrackMomentum;
00085   double       MinTrackEta;
00086   double       MaxTrackEta;
00087   unsigned int MaxNrStrips;
00088   unsigned int MinTrackHits;
00089   double       MaxTrackChiOverNdf;
00090   bool         AllowSaturation;
00091 
00092   bool         DiscriminatorMode;
00093   unsigned int Formula;
00094 
00095   InputTag     TrackProducer;
00096   InputTag     TrajToTrackProducer;
00097 
00098   TH2F*        Charge_Vs_Path_Barrel;
00099   TH2F*        Charge_Vs_Path_Endcap;
00100 
00101   TH2F*        PCharge_Vs_Path_Barrel;
00102   TH2F*        PCharge_Vs_Path_Endcap;
00103 
00104   vector<float> MeasurementProbabilities;
00105 
00106    private :
00107       struct stModInfo{int DetId; int SubDet; float Eta; float R; float Thickness; int NAPV; };
00108 
00109       class isEqual{
00110          public:
00111                  template <class T> bool operator () (const T& PseudoDetId1, const T& PseudoDetId2) { return PseudoDetId1==PseudoDetId2; }
00112       };
00113 
00114       hash_map<unsigned int, stModInfo*,  hash<unsigned int>, isEqual > MODsColl;
00115 };
00116 
00117 #endif
00118 

Generated on Tue Jun 9 17:45:24 2009 for CMSSW by  doxygen 1.5.4