#ifndef ElectronSelection_h #define ElectronSelection_h 1 #include "marlin/Processor.h" #include "lcio.h" #include #include using namespace lcio ; using namespace marlin ; /** Based on example processor for marlin. */ class ElectronSelection : public Processor { public: virtual Processor* newProcessor() { return new ElectronSelection ; } ElectronSelection() ; /** Called at the begin of the job before anything is read. * Use to initialize the processor, e.g. book histograms. */ virtual void init() ; /** Called for every run. */ virtual void processRunHeader( LCRunHeader* run ) ; /** Called for every event - the working horse. */ virtual void processEvent( LCEvent * evt ) ; virtual void loadHits( LCEvent * evt ) ; virtual void check( LCEvent * evt ) ; virtual int Nclusters(double Thresh); virtual float ThreshMax(); /** Called after data processing for clean up. */ virtual void end() ; private: int Nhits; float Etow[18][18]; int Itow[18][18]; float Eclu[50]; float Iclu[50]; float Jclu[50]; float X; float Y; float Z; int Nclu; FILE * pFile; bool isMC ; float Ebeam; float ERawMin; float ERawMax; int Cerenkov; int TwoShowerCut; float TmaxMax; float Eraw; float Eraw2; float EcalMIP; float EcalThresh; float Ehit; int Piece; int WI; int WJ; int I; int J; int K; int cellID; int cellID1; protected: /** Input collection name. */ std::string _EcalHitsColName ; int _nRun ; int _nEvt ; int _nSel ; } ; #endif