00001
00002 #ifndef ALGFARDETEVENT_H
00003 #define ALGFARDETEVENT_H
00004
00005 #include "Algorithm/AlgBase.h"
00006 #include "FarDetEventHandle.h"
00007
00008 #include <vector>
00009 using std::vector;
00010
00011 class CandShowerHandle;
00012 class CandTrackHandle;
00013 class CandFitTrackHandle;
00014
00015 class AlgFarDetEvent : public AlgBase
00016 {
00017
00018 public:
00019 AlgFarDetEvent();
00020 virtual ~AlgFarDetEvent();
00021 virtual void RunAlg(AlgConfig &ac, CandHandle &ch, CandContext &cx);
00022 virtual void Trace(const char *c) const;
00023
00024 private:
00025
00026 void SetTrackProperties(FarDetEventHandle* evt, CandFitTrackHandle* fit, CandTrackHandle* trk);
00027 void SetShowerProperties(FarDetEventHandle* evt, CandShowerHandle* shw);
00028
00029 bool Contained(const CandTrackHandle* track);
00030 double DeDx(Float_t emu);
00031
00032 void GetShower(const CandShowerHandle* shower, const CandTrackHandle* track, vector<double>& TempShw, vector<double>& TempTrk);
00033 void GetPulseHeight(vector<double>& TempShw, vector<double>& TempTrk, double& totph, const double& deweight);
00034 double GetDeWeightFactor(const double& LinearEhad, AlgConfig & ac);
00035 double CalibrateShowerEnergy(const double& totph, const double& deweight, AlgConfig & ac);
00036
00037 ClassDef(AlgFarDetEvent,1)
00038
00039 };
00040
00041 #endif