CbmRoot
CbmRichPmt.h
Go to the documentation of this file.
1 /*
2  * CbmRichPmt.h
3  *
4  * Created on: Dec 16, 2015
5  * Author: slebedev
6  */
7 
8 #ifndef RICH_DETECTOR_CBMRICHPMT_H_
9 #define RICH_DETECTOR_CBMRICHPMT_H_
10 
11 #include <Rtypes.h> // for THashConsistencyHolder, ClassDef
12 #include <RtypesCore.h> // for Double_t, Bool_t
13 #include <TObject.h> // for TObject
14 
15 #include <map> // for map
16 #include <vector> // for vector
17 
18 #include "CbmRichPmtType.h" // for CbmRichPmtTypeEnum
19 
20 class TGraph;
21 
23 public:
25  Double_t fLambdaMin; // minimum wavelength in QE table
26  Double_t fLambdaMax; // maximum wavelength in QE table
27  Double_t fLambdaStep; // wavelaength in QE table
28  std::vector<Double_t> fEfficiency; // Array of QE
29 
31  : fDetectorType()
32  , fLambdaMin(0.)
33  , fLambdaMax(0.)
34  , fLambdaStep(0.)
35  , fEfficiency() {}
36 };
37 
38 class CbmRichPmt : public TObject {
39 public:
40  CbmRichPmt();
41 
42  virtual ~CbmRichPmt();
43 
44  static Double_t getLambda(Double_t momentum);
45 
46  Bool_t isPhotonDetected(CbmRichPmtTypeEnum detType, Double_t momentum);
47 
51  void SetCollectionEfficiency(Double_t collEff) {
52  fCollectionEfficiency = collEff;
53  }
54 
55  /*
56  * Get QE curve as TGraph for specified detector type
57  */
58  TGraph* getQEGraph(CbmRichPmtTypeEnum detType);
59 
60 private:
61  Double_t
62  fCollectionEfficiency; // collection efficiency. Final QE = QE * fCollectionEfficiency
63  std::map<CbmRichPmtTypeEnum, CbmRichPmtQEData*>
64  fPmtDataMap; // store QE for specific PMT type
65 
66  static const Double_t c; // speed of light
67  static const Double_t h; // Planck constant
68  static const Double_t e; // elementary charge
69  Double_t
70  fRefractiveIndex; // refractive index of the gas. Set in the constructor from CbmRichGeoManager
71 
72  void InitQE();
73 
74  void ClearMap();
75 
76 
81 
86 
87  ClassDef(CbmRichPmt, 1)
88 };
89 
90 #endif /* RICH_DETECTOR_CBMRICHPMT_H_ */
CbmRichPmt::h
static const Double_t h
Definition: CbmRichPmt.h:67
CbmRichPmt::fCollectionEfficiency
Double_t fCollectionEfficiency
Definition: CbmRichPmt.h:62
CbmRichPmt::c
static const Double_t c
Definition: CbmRichPmt.h:66
CbmRichPmt::operator=
CbmRichPmt & operator=(const CbmRichPmt &)
Assignment operator.
CbmRichPmtQEData::CbmRichPmtQEData
CbmRichPmtQEData()
Definition: CbmRichPmt.h:30
CbmRichPmt::InitQE
void InitQE()
Definition: CbmRichPmt.cxx:118
CbmRichPmt
Definition: CbmRichPmt.h:38
CbmRichPmt::fPmtDataMap
std::map< CbmRichPmtTypeEnum, CbmRichPmtQEData * > fPmtDataMap
Definition: CbmRichPmt.h:64
CbmRichPmt::e
static const Double_t e
Definition: CbmRichPmt.h:68
CbmRichPmt::~CbmRichPmt
virtual ~CbmRichPmt()
Definition: CbmRichPmt.cxx:34
CbmRichPmt::ClearMap
void ClearMap()
Definition: CbmRichPmt.cxx:108
CbmRichPmt::isPhotonDetected
Bool_t isPhotonDetected(CbmRichPmtTypeEnum detType, Double_t momentum)
Definition: CbmRichPmt.cxx:42
CbmRichPmt::getLambda
static Double_t getLambda(Double_t momentum)
Definition: CbmRichPmt.cxx:36
CbmRichPmtTypeEnum
CbmRichPmtTypeEnum
Definition: CbmRichPmtType.h:11
CbmRichPmt::getQEGraph
TGraph * getQEGraph(CbmRichPmtTypeEnum detType)
Definition: CbmRichPmt.cxx:81
CbmRichPmtQEData::fLambdaMin
Double_t fLambdaMin
Definition: CbmRichPmt.h:25
CbmRichPmt::SetCollectionEfficiency
void SetCollectionEfficiency(Double_t collEff)
Set collection efficiency for photoelectrons in PMT optics.
Definition: CbmRichPmt.h:51
CbmRichPmt::fRefractiveIndex
Double_t fRefractiveIndex
Definition: CbmRichPmt.h:70
CbmRichPmtQEData::fEfficiency
std::vector< Double_t > fEfficiency
Definition: CbmRichPmt.h:28
CbmRichPmtQEData
Definition: CbmRichPmt.h:22
CbmRichPmtQEData::fLambdaStep
Double_t fLambdaStep
Definition: CbmRichPmt.h:27
CbmRichPmtQEData::fLambdaMax
Double_t fLambdaMax
Definition: CbmRichPmt.h:26
CbmRichPmtType.h
CbmRichPmt::CbmRichPmt
CbmRichPmt(const CbmRichPmt &)
Copy constructor.
CbmRichPmt::CbmRichPmt
CbmRichPmt()
Definition: CbmRichPmt.cxx:29
CbmRichPmtQEData::fDetectorType
CbmRichPmtTypeEnum fDetectorType
Definition: CbmRichPmt.h:24