3 #ifndef PHOTOELECTRICFITTINGPROCESSOR_H
4 #define PHOTOELECTRICFITTINGPROCESSOR_H 1
7 #include <marlin/Processor.h>
10 #include <gear/TPCParameters.h>
11 #include <gearimpl/GlobalPadIndex.h>
14 #include <EVENT/TrackerHit.h>
17 #include <Minuit2/FCNBase.h>
20 #include <CLHEP/Vector/TwoVector.h>
45 class PhotoelectricFittingProcessor :
public marlin::Processor
50 PhotoelectricFittingProcessor() ;
54 virtual Processor* newProcessor()
56 return new PhotoelectricFittingProcessor();
59 virtual void processRunHeader(lcio::LCRunHeader* run);
61 virtual void processEvent(lcio::LCEvent * evt);
63 virtual void check(lcio::LCEvent * evt);
71 std::string _input_photoelectric_tracker_pulses_collection_name;
75 std::string _output_photodot_collection_name;
79 std::string _output_photoline_collection_name;
83 bool _output_is_transient;
87 std::string _projected_photogeometry_file_name;
95 AIDA::ITuple *_photodot_fit_results_tuple;
99 std::map< gear::GlobalPadIndex, std::list< std::set< EVENT::TrackerPulse* > >::iterator > _photodot_pulse_set_by_global_index;
103 std::list< std::set< EVENT::TrackerPulse* > > _photodot_pulse_sets;
107 std::list< CLHEP::Hep2Vector > _photodot_centroids;
111 std::map< gear::GlobalPadIndex, std::list< std::set< EVENT::TrackerPulse* > >::iterator > _photoline_pulse_set_by_global_index;
115 std::list< std::set< EVENT::TrackerPulse* > > _photoline_pulse_sets;
119 class PhotodotLikelihood :
public ROOT::Minuit2::FCNBase
124 PhotodotLikelihood(
const std::set< EVENT::TrackerPulse* > &photodot_data);
126 virtual double operator()(
const std::vector<double>& x)
const;
128 virtual double Up()
const;
132 const std::set< EVENT::TrackerPulse* > &_photodot_data;
139 #endif // PHOTOELECTRICFITTINGPROCESSOR_H