00001
00002
00003
00004
00005
00006
00007
00008
00010
00011 #ifndef ALGCALDETPID_H
00012 #define ALGCALDETPID_H
00013 #include "TH1.h"
00014 #include "TFile.h"
00015 #include "Algorithm/AlgBase.h"
00016 #include "CandDigit/CandDigitListHandle.h"
00017 #include "CalDetSI/CandCalDetSIHandle.h"
00018
00019 class AlgCalDetPID : public AlgBase
00020 {
00021
00022 public:
00023 AlgCalDetPID();
00024 virtual ~AlgCalDetPID();
00025 virtual void RunAlg(AlgConfig &ac, CandHandle &ch, CandContext &cx);
00026 virtual void Trace(const char *c) const;
00027 private:
00028 bool HitTimeAnal(const CandDigitListHandle *cdlh,
00029 Double_t toftime,
00030 Float_t lowwin, Float_t highwin,
00031 Int_t& nbefore, Int_t& nafter,
00032 Int_t& nout, Int_t& nin, Float_t &chi2) const;
00033 bool IsAnOverlap(AlgConfig &ac,
00034 Int_t nbefore, Int_t nafter,
00035 Int_t nout, Int_t nin);
00036 bool CERInTimeWin(AlgConfig& ac,
00037 const CandCalDetSIHandle* csih,
00038 Double_t abstime, Double_t toftime,
00039 Float_t win0low, Float_t win0high,
00040 Float_t win1low, Float_t win1high,
00041 Float_t win2low, Float_t win2high,
00042 bool& cer0, bool& cer1, bool& cer2);
00043 Float_t OverlapLikelihood(TH1F *ehfar, TH1F *ehnear) const;
00044
00045 Bool_t fFirstEvent;
00046 Int_t fNAllowedBefore;
00047 Int_t fNAllowedAfter;
00048 Int_t fNAllowedOut;
00049 Int_t fNRequiredIn;
00050 Int_t fTimeFileNum;
00051 TFile *fTimeFile;
00052 TH1F *fThist[2];
00053
00054 ClassDef(AlgCalDetPID,2)
00055
00056 };
00057
00058 #endif // ALGCALDETPID_H
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072