Skip to content
Snippets Groups Projects
THcCherenkov.h 2.54 KiB
Newer Older
#ifndef ROOT_THcCherenkov
#define ROOT_THcCherenkov

///////////////////////////////////////////////////////////////////////////////
//                                                                           //
// Cherenkov                                                                 //
//                                                                           //
///////////////////////////////////////////////////////////////////////////////

#include "TClonesArray.h"
#include "THaNonTrackingDetector.h"
#include "THcHitList.h"
#include "THcCherenkovHit.h"

class THcCherenkov : public THaNonTrackingDetector, public THcHitList {

 public:
  THcCherenkov( const char* name, const char* description = "",
		THaApparatus* a = NULL );
  virtual ~THcCherenkov();
  
  virtual void 	     Clear( Option_t* opt="" );
  virtual Int_t      Decode( const THaEvData& );
  virtual EStatus    Init( const TDatime& run_time );
  void               InitArrays();
  void               DeleteArrays();
  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 void AccumulatePedestals(TClonesArray* rawhits);
  virtual void CalculatePedestals();

  virtual Int_t      ApplyCorrections( void );

  virtual void Print(const Option_t* opt) const;

  THcCherenkov();  // for ROOT I/O		
 protected:
Zafar's avatar
Zafar committed
  Int_t         fAnalyzePedestals;

  // Parameters
Zafar's avatar
Zafar committed
  Double_t*     fGain;
  Double_t*     fCerWidth;

  // Event information
Zafar's avatar
Zafar committed
  Int_t         fNhits;
  Int_t*        fNPMT;            // [fNelem] Array of ADC amplitudes
  Double_t*     fADC;             // [fNelem] Array of ADC amplitudes
  Double_t*     fADC_P;           // [fNelem] Array of ADC amplitudes
  Double_t*     fNPE;             // [fNelem] Array of ADC amplitudes
  Double_t      fNPEsum;          // [fNelem] Array of ADC amplitudes
  Double_t      fNCherHit;        // [fNelem] Array of ADC amplitudes
Zafar's avatar
Zafar committed
  TClonesArray* fADCHits;

  // Pedestals
Zafar's avatar
Zafar committed
  Int_t         fNPedestalEvents;
  Int_t         fMinPeds;
  Int_t*        fPedSum;	  /* Accumulators for pedestals */
  Int_t*        fPedSum2;
  Int_t*        fPedLimit; 
  Double_t*     fPedMean; 	  /* Can be supplied in parameters and then */ 
  Int_t*        fPedCount; 
  Double_t*     fPed;
  Double_t*     fThresh;
  
  void Setup(const char* name, const char* description);
  virtual void  InitializePedestals( );

Zafar's avatar
Zafar committed
  ClassDef(THcCherenkov,0)        // Generic cherenkov class