Skip to content
Snippets Groups Projects
THcCherenkov.h 3.65 KiB
Newer Older
  • Learn to ignore specific revisions
  • #ifndef ROOT_THcCherenkov
    #define ROOT_THcCherenkov
    
    ///////////////////////////////////////////////////////////////////////////////
    //                                                                           //
    // Cherenkov                                                                 //
    //                                                                           //
    ///////////////////////////////////////////////////////////////////////////////
    
    #include "TClonesArray.h"
    #include "THaNonTrackingDetector.h"
    #include "THcHitList.h"
    #include "THcCherenkovHit.h"
    
    #include "hcana/Logger.h"
    
    Whitney Armstrong's avatar
    Whitney Armstrong committed
    class THcCherenkov : public THaNonTrackingDetector, public THcHitList {
    
      using vec = std::vector<Double_t>;
    
    
     public:
    
      THcCherenkov(const char* name, const char* description = "", THaApparatus* a = NULL);
    
      virtual ~THcCherenkov();
    
      virtual void 	  Clear(Option_t* opt="");
      virtual void    Print(const Option_t* opt) const;
      virtual void    AccumulatePedestals(TClonesArray* rawhits);
      virtual void    CalculatePedestals();
      virtual Int_t   Decode(const THaEvData&);
      virtual Int_t   ReadDatabase(const TDatime& date);
      virtual Int_t   DefineVariables(EMode mode = kDefine);
      virtual Int_t   CoarseProcess(TClonesArray& tracks);
      virtual Int_t   FineProcess(TClonesArray& tracks);
      virtual Int_t   ApplyCorrections( void );
      virtual EStatus Init(const TDatime& run_time);
    
    
      void  InitArrays();
      void  DeleteArrays();
      Int_t GetIndex(Int_t nRegion, Int_t nValue);
    
      //  Double_t GetCerNPE() { return fNPEsum;}
      Double_t GetCerNPE();
    
    
      // Vector/TClonesArray length parameters
      static const Int_t MaxNumCerPmt   = 4;
      static const Int_t MaxNumAdcPulse = 4;
    
    
      THcCherenkov();  // for ROOT I/O
    
     protected:
    
      Int_t     fAnalyzePedestals;
      Int_t     fDebugAdc;
      Double_t* fWidth;
    
    
      Int_t     fADC_RefTimeCut;
    
    
      Int_t     fNhits;
      Int_t     fTotNumAdcHits;
      Int_t     fTotNumGoodAdcHits;
      Int_t     fTotNumTracksMatched;
      Int_t     fTotNumTracksFired;
      Double_t  fNpeSum;
      Double_t* fGain;
    
      vector<Int_t>    fNumAdcHits;
      vector<Int_t>    fNumGoodAdcHits;
      vector<Int_t>    fNumTracksMatched;
      vector<Int_t>    fNumTracksFired;
    
      vec fGoodAdcPed;
      vec fGoodAdcMult;
      vec fGoodAdcHitUsed;
      vec fGoodAdcPulseInt;
      vec fGoodAdcPulseIntRaw;
      vec fGoodAdcPulseAmp;
      vec fGoodAdcPulseTime;
      vec fGoodAdcTdcDiffTime;
      vec fNpe;
    
    
      Int_t     fNRegions;
      Int_t     fRegionsValueMax;
      Double_t  fRedChi2Min;
      Double_t  fRedChi2Max;
      Double_t  fBetaMin;
      Double_t  fBetaMax;
      Double_t  fENormMin;
      Double_t  fENormMax;
    
      Double_t  fDpMin;
      Double_t  fDpMax;
    
      Double_t  fXAtCer;
      Double_t  fYAtCer;
    
      Double_t*  fAdcTimeWindowMin;
      Double_t*  fAdcTimeWindowMax;
    
      Double_t* fRegionValue;
    
      // 6 Gev pedestal variables
      Int_t     fNPedestalEvents;
      Int_t     fMinPeds;
      Int_t*    fPedSum;	  /* Accumulators for pedestals */
      Int_t*    fPedSum2;
      Int_t*    fPedLimit;
      Int_t*    fPedCount;
      Double_t* fPedMean; 	  /* Can be supplied in parameters and then */
      Double_t* fPed;
      Double_t* fThresh;
    
      // 12 Gev FADC variables
    
      TClonesArray* frAdcPedRaw;
    
      TClonesArray* frAdcPulseIntRaw;
      TClonesArray* frAdcPulseAmpRaw;
      TClonesArray* frAdcPulseTimeRaw;
    
      TClonesArray* frAdcPed;
    
      TClonesArray* frAdcPulseInt;
      TClonesArray* frAdcPulseAmp;
    
      TClonesArray* frAdcPulseTime;
    
      TClonesArray* fAdcErrorFlag;
    
      void Setup(const char* name, const char* description);
      virtual void  InitializePedestals( );
    
     THcHodoscope* fglHod;		// Hodoscope to get start time
    
    Zafar's avatar
    Zafar committed
      ClassDef(THcCherenkov,0)        // Generic cherenkov class