1 #ifndef SiTracker_dEdxProcessor_h
2 #define SiTracker_dEdxProcessor_h 1
7 #include "marlin/Processor.h"
8 #include "MarlinTrk/Factory.h"
14 #include <DDRec/SurfaceManager.h>
15 #include <DDRec/DetectorData.h>
18 using namespace lcio ;
19 using namespace marlin ;
35 dEdxPoint(
const double _dE,
const double _dx);
68 virtual void processRunHeader( LCRunHeader* run ) ;
72 virtual void processEvent( LCEvent * evt ) ;
74 virtual void check( LCEvent * evt ) ;
85 static double dEdxGeneralTruncMean(
dEdxVec,
double &dEdxError,
86 const double truncLo=0,
87 const double truncHi=0);
88 static double dEdxMean(
dEdxVec,
double &dEdxError);
89 static double dEdxMedian(
dEdxVec,
double &dEdxError);
90 static double dEdxTruncMean(
dEdxVec,
double &dEdxError);
91 static double dEdxHarmonic(
dEdxVec,
double &dEdxError);
92 static double dEdxHarmonic2(
dEdxVec,
double &dEdxError);
93 static double dEdxWgtHarmonic(
dEdxVec,
double &dEdxError);
94 static double dEdxWgtHarmonic2(
dEdxVec,
double &dEdxError);
97 typedef double (*evalChoice)(
dEdxVec,
double &dEdxError);
101 evalChoice dEdxEval{};
105 std::string m_trackCollName{};
113 bool m_cheatSensorThicknesses{};
115 FloatVec m_sensThicknessCheatVals{};
118 std::string m_dEdxEstimator{};
128 int lastRunHeaderProcessed{};
130 unsigned nTimers = 8;
131 std::vector<std::chrono::duration<double>>
timers;
132 std::chrono::high_resolution_clock::time_point
lastTP;
133 std::chrono::high_resolution_clock::time_point
newTP;
135 newTP = std::chrono::high_resolution_clock::now();
136 timers.at(i) += std::chrono::duration_cast<std::chrono::duration<double>>(newTP - lastTP);
const dd4hep::rec::SurfaceMap * surfMap
static double truncFractionUp
std::chrono::high_resolution_clock::time_point newTP
virtual Processor * newProcessor()
std::vector< std::chrono::duration< double > > timers
static double truncFractionLo
MarlinTrk::IMarlinTrkSystem * trkSystem
SiTracker_dEdxProcessor for Marlin.
std::vector< dEdxPoint > dEdxVec
std::chrono::high_resolution_clock::time_point lastTP
static bool dEdxOrder(dEdxPoint p1, dEdxPoint p2)
std::vector< std::string > StringVec