Go to the documentation of this file.00001 #ifndef GoodSeedProducer_H
00002 #define GoodSeedProducer_H
00003
00004 #include <memory>
00005
00006
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
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
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
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