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 "FWCore/Framework/interface/Event.h"
00012 #include "FWCore/Framework/interface/MakerMacros.h"
00013 #include "FWCore/Framework/interface/ESHandle.h"
00014 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00015 #include "DataFormats/ParticleFlowReco/interface/PFClusterFwd.h"
00016 #include "DataFormats/ParticleFlowReco/interface/PFCluster.h"
00017 #include "TMVA/Reader.h"
00018 #include "DataFormats/Math/interface/LorentzVector.h"
00020
00032
00033 class PFResolutionMap;
00034
00035
00036 class PFTrackTransformer;
00037 class TrajectoryFitter;
00038 class TrajectorySmoother;
00039 class TrackerGeometry;
00040 class TrajectoryStateOnSurface;
00041
00042
00043 class GoodSeedProducer : public edm::EDProducer {
00044 typedef TrajectoryStateOnSurface TSOS;
00045 public:
00046 explicit GoodSeedProducer(const edm::ParameterSet&);
00047 ~GoodSeedProducer();
00048
00049 private:
00050 virtual void beginJob(const edm::EventSetup&) ;
00051 virtual void produce(edm::Event&, const edm::EventSetup&);
00052 virtual void endJob(){}
00053
00055 int getBin(float,float);
00056 int getBin(float);
00057 void PSforTMVA(math::XYZTLorentzVector mom,
00058 math::XYZTLorentzVector pos);
00059 bool IsIsolated(float charge,float P,
00060 math::XYZPointF,
00061 const reco::PFClusterCollection &ecalColl,
00062 const reco::PFClusterCollection &hcalColl);
00063
00064
00066 std::vector<reco::PFCluster> ps1Clus;
00067 std::vector<reco::PFCluster> ps2Clus;
00068
00070 std::string preidckf_;
00071
00073 std::string preidgsf_;
00074
00076 edm::ESHandle<TrajectoryFitter> fitter_;
00077
00079 edm::ESHandle<TrajectorySmoother> smoother_;
00080
00082 PFTrackTransformer *pfTransformer_;
00083
00085 int nHitsInSeed_;
00086
00088 double minPt_;
00089 double maxPt_;
00090 double maxEta_;
00091
00093 bool applyIsolation_;
00094 double HcalIsolWindow_;
00095 double EcalStripSumE_minClusEnergy_;
00096 double EcalStripSumE_deltaEta_;
00097 double EcalStripSumE_deltaPhiOverQ_minValue_;
00098 double EcalStripSumE_deltaPhiOverQ_maxValue_;
00099 double minEoverP_;
00100 double maxHoverP_;
00102
00104 double clusThreshold_;
00105
00107 double minEp_;
00108 double maxEp_;
00109
00111 bool produceCkfseed_;
00112
00114 bool produceCkfPFT_;
00115
00117 float thr[150];
00118 float thrPS[20];
00119
00120
00121 edm::ParameterSet conf_;
00122 edm::InputTag pfCLusTagPSLabel_;
00123 edm::InputTag pfCLusTagECLabel_;
00124 edm::InputTag pfCLusTagHCLabel_;
00125 std::vector<edm::InputTag> tracksContainers_;
00126
00127
00128 std::string fitterName_;
00129 std::string smootherName_;
00130 std::string propagatorName_;
00131
00132 static PFResolutionMap* resMapEtaECAL_;
00133 static PFResolutionMap* resMapPhiECAL_;
00134
00136 bool useQuality_;
00137 reco::TrackBase::TrackQuality trackQuality_;
00138
00140 TMVA::Reader *reader;
00141
00143 float eP,chi,eta,pt,nhit,dpt,chired,chiRatio;
00144 float ps1En,ps2En,ps1chi,ps2chi;
00146 bool useTmva_;
00147
00149 std::string method_;
00150
00152 math::XYZVector B_;
00153
00155 bool usePreshower_;
00156 };
00157 #endif