File indexing completed on 2024-04-06 11:59:39
0001 #ifndef TrackRecoDeDx_DeDxDiscriminatorLearner_H
0002 #define TrackRecoDeDx_DeDxDiscriminatorLearner_H
0003
0004 #include "FWCore/Framework/interface/Frameworkfwd.h"
0005 #include "FWCore/Framework/interface/Event.h"
0006 #include "FWCore/Framework/interface/MakerMacros.h"
0007 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0008
0009 #include "CommonTools/ConditionDBWriter/interface/ConditionDBWriter.h"
0010 #include "CondFormats/PhysicsToolsObjects/interface/Histogram3D.h"
0011
0012 #include "TrackingTools/PatternTools/interface/Trajectory.h"
0013 #include "TrackingTools/PatternTools/interface/TrajTrackAssociation.h"
0014 #include "TrackingTools/TrajectoryState/interface/TrajectoryStateOnSurface.h"
0015
0016 #include "RecoTracker/DeDx/interface/DeDxTools.h"
0017
0018 #include "TFile.h"
0019 #include "TH3F.h"
0020
0021 #include <memory>
0022
0023 class DeDxDiscriminatorLearner : public ConditionDBWriter<PhysicsTools::Calibration::HistogramD3D> {
0024 public:
0025 explicit DeDxDiscriminatorLearner(const edm::ParameterSet&);
0026 ~DeDxDiscriminatorLearner() override;
0027
0028 private:
0029 void algoBeginJob(const edm::EventSetup&) override;
0030 void algoAnalyze(const edm::Event&, const edm::EventSetup&) override;
0031 void algoEndJob() override;
0032
0033 void processHit(const TrackingRecHit* recHit,
0034 float trackMomentum,
0035 float& cosine,
0036 const TrajectoryStateOnSurface& trajState);
0037 void algoAnalyzeTheTree(const edm::EventSetup& iSetup);
0038
0039 std::unique_ptr<PhysicsTools::Calibration::HistogramD3D> getNewObject() override;
0040
0041
0042 edm::EDGetTokenT<TrajTrackAssociationCollection> m_trajTrackAssociationTag;
0043 edm::EDGetTokenT<reco::TrackCollection> m_tracksTag;
0044
0045 edm::ESGetToken<TrackerGeometry, TrackerDigiGeometryRecord> m_tkGeomToken;
0046
0047 float MinTrackMomentum;
0048 float MaxTrackMomentum;
0049 float MinTrackEta;
0050 float MaxTrackEta;
0051 unsigned int MaxNrStrips;
0052 unsigned int MinTrackHits;
0053 float MaxTrackChiOverNdf;
0054
0055 float P_Min;
0056 float P_Max;
0057 int P_NBins;
0058 float Path_Min;
0059 float Path_Max;
0060 int Path_NBins;
0061 float Charge_Min;
0062 float Charge_Max;
0063 int Charge_NBins;
0064
0065 std::vector<std::string> VInputFiles;
0066 std::string algoMode;
0067 std::string HistoFile;
0068
0069 TH3F* Charge_Vs_Path;
0070
0071 std::string m_calibrationPath;
0072 bool useCalibration;
0073 bool shapetest;
0074
0075 std::vector<std::vector<float> > calibGains;
0076 unsigned int m_off;
0077 };
0078
0079 #endif