CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_4_4_5_patch3/src/RecoParticleFlow/PFTracking/interface/GoodSeedProducer.h

Go to the documentation of this file.
00001 #ifndef GoodSeedProducer_H
00002 #define GoodSeedProducer_H
00003 // system include files
00004 #include <memory>
00005 
00006 // user include files
00007 
00008 #include "FWCore/Framework/interface/Frameworkfwd.h"
00009 #include "FWCore/Framework/interface/EDProducer.h"
00010 #include "DataFormats/TrackReco/interface/Track.h"
00011 #include "DataFormats/TrackReco/interface/TrackFwd.h"
00012 #include "FWCore/Framework/interface/Event.h"
00013 #include "FWCore/Framework/interface/MakerMacros.h"
00014 #include "FWCore/Framework/interface/ESHandle.h"
00015 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00016 #include "DataFormats/ParticleFlowReco/interface/PFCluster.h"
00017 #include "DataFormats/ParticleFlowReco/interface/PFClusterFwd.h"
00018 #include "DataFormats/ParticleFlowReco/interface/PreIdFwd.h"
00019 #include "DataFormats/Common/interface/ValueMap.h"
00020 #include "TMVA/Reader.h"
00021 #include "DataFormats/Math/interface/LorentzVector.h"
00023 
00035 //namespace reco {
00036 class PFResolutionMap;
00037 // }
00038 
00039 class PFTrackTransformer;
00040 class TrajectoryFitter;
00041 class TrajectorySmoother;
00042 class TrackerGeometry;
00043 class TrajectoryStateOnSurface;
00044 
00045 
00046 class GoodSeedProducer : public edm::EDProducer {
00047   typedef TrajectoryStateOnSurface TSOS;
00048    public:
00049       explicit GoodSeedProducer(const edm::ParameterSet&);
00050       ~GoodSeedProducer();
00051   
00052    private:
00053       virtual void beginRun(edm::Run & run,const edm::EventSetup&) ;
00054       virtual void produce(edm::Event&, const edm::EventSetup&);
00055       virtual void endRun();
00056  
00058       int getBin(float,float);
00059       int getBin(float);
00060       void PSforTMVA(math::XYZTLorentzVector mom,
00061                      math::XYZTLorentzVector pos);
00062       bool IsIsolated(float  charge,float P,
00063                       math::XYZPointF, 
00064                       const reco::PFClusterCollection &ecalColl,
00065                       const reco::PFClusterCollection &hcalColl);
00066 
00067       void fillPreIdRefValueMap( edm::Handle<reco::TrackCollection> tkhandle,
00068                                  const edm::OrphanHandle<reco::PreIdCollection>&,
00069                                  edm::ValueMap<reco::PreIdRef>::Filler & filler);
00070       // ----------member data ---------------------------
00071 
00073       std::vector<reco::PFCluster> ps1Clus;
00074       std::vector<reco::PFCluster> ps2Clus;
00075 
00077       std::string preidckf_;
00078 
00080       std::string preidgsf_;
00081 
00083       std::string preidname_;
00084 
00086       edm::ESHandle<TrajectoryFitter> fitter_;
00087 
00089       edm::ESHandle<TrajectorySmoother> smoother_;
00090 
00092       PFTrackTransformer *pfTransformer_;
00093 
00095       int nHitsInSeed_;
00096 
00098       double minPt_;
00099       double maxPt_;
00100       double maxEta_;
00101       
00103       bool applyIsolation_;
00104       double HcalIsolWindow_;
00105       double EcalStripSumE_minClusEnergy_;
00106       double EcalStripSumE_deltaEta_;
00107       double EcalStripSumE_deltaPhiOverQ_minValue_;
00108       double EcalStripSumE_deltaPhiOverQ_maxValue_;
00109       double minEoverP_;
00110       double maxHoverP_;
00112 
00114       double clusThreshold_;
00115 
00117       double minEp_;
00118       double maxEp_;
00119 
00121       bool produceCkfseed_;
00122 
00124       bool disablePreId_;
00125 
00127       bool producePreId_;
00128       
00130       double PtThresholdSavePredId_;
00131 
00133       float thr[150];
00134       float thrPS[20];
00135 
00136       // ----------access to event data
00137       edm::ParameterSet conf_;
00138       edm::InputTag pfCLusTagPSLabel_;
00139       edm::InputTag pfCLusTagECLabel_;
00140       edm::InputTag pfCLusTagHCLabel_;
00141       std::vector<edm::InputTag> tracksContainers_;
00142       
00143 
00144       std::string fitterName_;
00145       std::string smootherName_;
00146       std::string propagatorName_;
00147 
00148       static PFResolutionMap* resMapEtaECAL_;
00149       static PFResolutionMap* resMapPhiECAL_;
00150 
00152       bool useQuality_;
00153       reco::TrackBase::TrackQuality trackQuality_;
00154         
00156       TMVA::Reader *reader;
00157 
00159       float eP,chi,eta,pt,nhit,dpt,chired,chiRatio;
00160       float ps1En,ps2En,ps1chi,ps2chi;
00162       bool useTmva_;
00163 
00165       std::string method_;
00166 
00168       math::XYZVector B_;
00169 
00171       bool usePreshower_;
00172 
00174       std::map<reco::TrackRef,unsigned> refMap_;
00175      
00176 };
00177 #endif