Skip to content
Snippets Groups Projects
CbmTofCalibrator.h 2.39 KiB
Newer Older
/** @file CbmTofCalibrator.h
 ** @author nh <N.Herrmann@gsi.de>
 ** @date 28.02.2020
 **/

#ifndef CBMTOFCALIBRATOR_H
#define CBMTOFCALIBRATOR_H 1

// TOF Classes and includes
class CbmTofDigi;
class CbmTofHit;
class CbmMatch;
class CbmEvent;
class CbmVertex;
   // Geometry
class CbmTofGeoHandler;
class CbmTofDetectorId;
class CbmTofDigiPar;
class CbmTofDigiBdfPar;
class CbmTofCell;
class CbmTofFindTracks;
class CbmDigiManager;

#include "CbmDigiManager.h"
#include "CbmTofEventClusterizer.h"
#include "CbmTofFindTracks.h"
#include "CbmTofTrackletParam.h"
#include "FairTrackParam.h"
#include "CbmTofDigi.h"
#include "CbmTofHit.h"
#include "CbmTofTracklet.h"
#include "CbmTofTrackletTools.h"
#include "TMath.h"
#include "TH1.h"
#include "TH2.h"
#include <vector>

class TClonesArray;

/** @class CbmTofCalibrator
 ** @brief  contains filling and updating of calibration histos
 ** @author nh
 **/
class CbmTofCalibrator: public FairTask
{

  public:
	/**   Constructor   **/
	CbmTofCalibrator();

	/**   Destructor   **/
	virtual ~CbmTofCalibrator();

	InitStatus Init();
	Bool_t  InitParameters();
	Bool_t  CreateCalHist();
	void    FillCalHist(CbmTofTracklet *pTrk);
	Bool_t  UpdateCalHist(Int_t iOpt);
	void    ReadHist(TFile *fhFile);		      	
	void    WriteHist(TFile *fhFile);
    
    inline void SetR0Lim(Double_t dVal) {fdR0Lim=dVal;}
	
 private:
	CbmDigiManager*               fDigiMan;
	CbmTofEventClusterizer* fTofClusterizer;
	CbmTofFindTracks*           fTofFindTracks;
	CbmTofTrackletTools*     fTrackletTools; 

	CbmTofDigiPar*    fDigiPar;
	CbmTofDigiBdfPar* fDigiBdfPar;
	TClonesArray*     fTofDigiMatchColl;     // TOF Digi Links

	std::vector< TH2* > fhCalPos;    // [nbDet]
	std::vector< TH2* > fhCalTOff;  // [nbDet]
	std::vector< TH2* > fhCalTot;    // [nbDet]
	std::vector< std::vector< std::vector<TH2 *> > >fhCalWalk; // [nbDet][nbCh][nSide]

	std::vector< TH1* > fhCorPos;    // [nbDet]
	std::vector< TH1* > fhCorTOff;  // [nbDet]
	std::vector< TH1* > fhCorTot;    // [nbDet]
	std::vector< TH1* > fhCorTotOff;    // [nbDet]
	std::vector< TH1* > fhCorSvel;   // [nbDet]
	std::vector< std::vector< std::vector<TH1 *> > >fhCorWalk; // [nbDet][nbCh][nSide]	
	  
	std::map<UInt_t, UInt_t> fDetIdIndexMap;
    
    Double_t fdR0Lim=0.;
    
	CbmTofCalibrator(const CbmTofCalibrator&) = delete;
	CbmTofCalibrator operator=(const CbmTofCalibrator&) = delete;
	
	ClassDef(CbmTofCalibrator, 1);
};

#endif /* CBMTOFCALIBRATOR_H */