CGEM BOSS 6.6.5.f
BESIII Offline Software System
Loading...
Searching...
No Matches
Cgem/CgemDigitizerSvc/CgemDigitizerSvc-00-00-24/CgemDigitizerSvc/SamplingGar.h
Go to the documentation of this file.
1#ifndef SAMPLINGGAR_H
2#define SAMPLINGGAR_H
3
4#include "CgemGeomSvc/ICgemGeomSvc.h"
5#include "CgemDigitizerSvc/DriftAndAvalanche.h"
6
7#include <vector>
8#include <string>
9
10#include "TF1.h"
11
12class G4Svc;
13
15public:
18
19 void init(ICgemGeomSvc* geomSvc, double magConfig);
20
21 void setIonElectrons(int layer, int nElectrons, std::vector<double> x, std::vector<double> y, std::vector<double> z, std::vector<double> t);
22
23 /* output info of multiplied eletrons */
24 int getNelectrons() const {return m_nMulElec;}
25 double getX(int n) const {return m_eX[n];}
26 double getY(int n) const {return m_eY[n];}
27 double getZ(int n) const {return m_eZ[n];}
28 double getT(int n) const {return m_eT[n];}
29
30private:
31 void clear();
32
33 /* /\* region = 0,1,2,3 (drift/transfer1/transfer2/induction) *\/ */
34 /* void smearDrift(int layer, int region, double driftD, double& dphi, double& dz, double& dt) const; */
35
36 bool readSmearPar();
37 bool samplingDrift(double driftD, int idIon);
38 bool samplingTransfer(int region, int idLastStep); /* region = 1,2 (Transfer1/Transfer2) */
39 int samplingGain(int region); /* region = 0,1,2 (Drift/Transfer1/Transfer2 */
40 bool calMultiE(int layer);
41 /* void getDriftPar(int layer, int region, double driftD, double& meanPhi, double& sigmaPhi, */
42 /* double& meanZ, double& sigmaZ, double& meanT, double& sigmaT) const; */
43
44 TF1* m_funPolya[3]; /* Polya functions */
45
46 ICgemGeomSvc* m_geomSvc;
47 double m_magConfig; /* magnetic field */
48
49 /* electrons from ionization in drift region */
50 int m_nIonE; /* number of electrons from ionization in drift region */
51 std::vector<double> m_vecIonR;
52 std::vector<double> m_vecIonPhi;
53 std::vector<double> m_vecIonZ;
54 std::vector<double> m_vecIonT;
55
56 /* electrons after gem foil1 */
57 int m_nEgem1;
58 std::vector<int> m_idIon;
59 std::vector<double> m_vecGem1dX;
60 std::vector<double> m_vecGem1dZ;
61 std::vector<double> m_vecGem1dT;
62
63 /* electrons after gem foil2 */
64 int m_nEgem2;
65 std::vector<int> m_idGem1;
66 std::vector<double> m_vecGem2dX;
67 std::vector<double> m_vecGem2dZ;
68 std::vector<double> m_vecGem2dT;
69
70 /* electrons after gem foil3 */
71 int m_nEgem3;
72 std::vector<int> m_idGem2;
73 std::vector<double> m_vecGem3dX;
74 std::vector<double> m_vecGem3dZ;
75 std::vector<double> m_vecGem3dT;
76
77 /* info of multiplied electrons */
78 int m_nMulElec;
79 std::vector<double> m_eX;
80 std::vector<double> m_eY;
81 std::vector<double> m_eZ;
82 std::vector<double> m_eT;
83
84 /* gain of each gem foil */
85 double m_gain_gem[3][3];
86
87 /* smear parameters */
88 /* drift region & Gem-1 */
89 double m_meanXpar[2];
90 double m_sigmaXpar[4];
91 double m_meanZpar;
92 double m_sigmaZpar[4];
93 double m_meanTpar[2];
94 double m_sigmaTpar[4];
95 double m_transparency_gem1;
96
97 /* Transfer1/Gem2 & Transfer2/Gem3 */
98 double m_meanX_transf[2];
99 double m_sigmaX_transf[2];
100 double m_meanZ_transf[2];
101 double m_sigmaZ_transf[2];
102 double m_meanT_transf[2];
103 double m_sigmaT_transf[2];
104 double m_transparency_gem2;
105 double m_transparency_gem3;
106
107 /* Induction */
108 double m_meanX_induc;
109 double m_sigmaX_induc;
110 double m_meanZ_induc;
111 double m_sigmaZ_induc;
112 double m_meanT_induc;
113 double m_sigmaT_induc;
114
115};
116
117#endif
118
const Int_t n
Double_t x[10]
void init(ICgemGeomSvc *geomSvc, double magConfig)
Definition: SamplingGar.cxx:33
void setIonElectrons(int layer, int nElectrons, std::vector< double > x, std::vector< double > y, std::vector< double > z, std::vector< double > t)
Definition: SamplingGar.cxx:50
int t()
Definition: t.c:1