1 #ifndef MMSCATTERPROCESSOR_H
2 #define MMSCATTERPROCESSOR_H
4 #include <marlin/Processor.h>
10 #include "MMPadResponseFunction.h"
14 #include "EVENT/LCCollection.h"
15 #include "IMPL/LCCollectionVec.h"
16 #include "EVENT/TrackerPulse.h"
19 #include <AIDA/AIDA.h>
20 #include <marlin/AIDAProcessor.h>
21 #include <AIDA/ITupleFactory.h>
22 #include <AIDA/ITuple.h>
23 #include <AIDA/IHistogramFactory.h>
24 #include <AIDA/IHistogram1D.h>
25 #include <AIDA/IHistogram2D.h>
28 #include <EVENT/LCFloatVec.h>
29 #include <IMPL/TrackerDataImpl.h>
30 #include <IMPL/TrackerPulseImpl.h>
31 #include <IMPL/TrackerHitImpl.h>
32 #include <IMPL/TrackImpl.h>
35 #include <gear/TPCParameters.h>
36 #include <gear/TPCModule.h>
37 #include <gearimpl/GlobalPadIndex.h>
40 #include <marlin/Global.h>
43 #include <Minuit2/MnUserParameters.h>
44 #include <Minuit2/MnMigrad.h>
45 #include <Minuit2/FunctionMinimum.h>
46 #include <Minuit2/Minuit2Minimizer.h>
48 #include "Math/Minimizer.h"
49 #include "Math/Functor.h"
95 static std::vector<double> CALIB_PARAMS;
103 virtual void processRunHeader(EVENT::LCRunHeader* run);
105 virtual void processEvent(EVENT::LCEvent* evt);
107 virtual void check(EVENT::LCEvent* evt);
111 static std::pair<double, double> calculateTrackPosition (
const gear::TPCParameters&,
const IMPL::TrackImpl*,
int mod,
int row );
112 static std::pair<double, double> calculateTrackPosition (
const gear::TPCParameters&,
double d0,
double phi0,
double omega,
const float * ref,
int mod,
int row );
113 static std::pair<double, double> calculateStraightTrackPosition (
const gear::TPCParameters&,
double d0,
double phi0,
const float * ref,
int mod,
int row );
116 typedef std::map<int, std::map<int, std::vector<TrackerPulse*> > > SortedPulseMap;
117 typedef std::map<std::pair<int, int>, std::vector<std::pair<double, float> > > PointsMap;
119 lcio::StringVec _inputColNames;
130 std::string _output_path;
131 std::string _prfType;
132 std::vector<float> _parVec;
133 std::vector<int> _moduleList;
134 std::map<int, int> _moduleMap;
135 PointsMap _scatterMap;
137 std::vector<std::vector<double> > _iterationPar;
138 std::vector<double> _iterationNumbers;
146 std::map<std::pair<int,int>, TH1*> _scatterPlots;
149 AIDA::ITuple* fitData;
157 void _sortPulses (
const EVENT::TrackerHitVec&,
const gear::TPCParameters&, SortedPulseMap& );
160 void _fillData (
const SortedPulseMap&,
const gear::TPCParameters&,
const IMPL::TrackImpl*, PointsMap& );
170 PRFFcn(std::string prfType,
int nPar)
176 double operator()(
const double * x,
const double * par)
const
179 return par[_nPar]*_prf.prf(x[0] - par[_nPar+1], par);
191 #endif // MMSCATTERPROCESSOR_H
virtual void init()
Definition: MMScatterProcessor.cc:125
void _sortPulses(const EVENT::TrackerHitVec &, const gear::TPCParameters &, SortedPulseMap &)
Definition: MMScatterProcessor.cc:595
Definition: MMPadResponseFunction.h:18
Definition: MMScatterProcessor.h:165
Basic overview:
Definition: MMScatterProcessor.h:90