3 #ifndef PHOTODOTRECONSTRUCTIONPROCESSOR_H_
4 #define PHOTODOTRECONSTRUCTIONPROCESSOR_H_ 1
7 #include <marlin/Processor.h>
10 #include <gear/PadRowLayout2D.h>
11 #include <gearimpl/GlobalPadIndex.h>
14 #include <IMPL/TrackerPulseImpl.h>
17 #include "HitCandidate.h"
35 class PhotodotReconstructionProcessor :
public marlin::Processor
42 virtual Processor * newProcessor()
44 return new PhotodotReconstructionProcessor ;
46 PhotodotReconstructionProcessor();
47 ~PhotodotReconstructionProcessor();
55 virtual void processRunHeader(lcio::LCRunHeader * run);
59 virtual void processEvent(lcio::LCEvent * evt);
63 virtual void check(lcio::LCEvent * evt);
77 Photodot(
double x,
double y,
double diameter) :
82 _diameter(diameter) {};
87 Photodot(
double r,
double phi,
double diameter,
int alt_type) :
92 _diameter(diameter) {};
111 void findNearestHit(Photodot thisPhotodot,
int &module,
int &pad);
119 int findCentreColumn(
int module,
int pad);
127 gear::Vector2D findGausHitCentre(
int module,
int columnCentre);
136 gear::Vector3D findMeanHitCentre(
int module,
int columnCentre,
float* covMatrix);
144 gear::Vector3D calculatePositionsAndErrors(
const HitCandidate &cand,
float* covMatrix);
151 void findPhotodotPulses(LCCollection* electron_cloud_collection);
159 double getPadCharge(
int module,
int padIndex);
163 std::string _geometry_filename;
167 std::string _input_pulses_collection_name;
171 std::string _input_hitPosition_collection_name;
176 std::string _output_reconstuctedPhototdots_collection_name;
181 std::string _output_photodot_collection_name;
187 std::vector< Photodot > _photodots;
188 std::vector< Photodot > _expected_photodots;
192 std::multimap<gear::GlobalPadIndex , EVENT::TrackerPulse * > * _pulses;
196 std::string _geometry_type;
210 double _drift_velocity;
214 double _tpc_outer_radius;
218 double _tpc_inner_radius;
244 #endif //PHOTODOTRECONSTRUCTIONPROCESSOR_H_