CGEM BOSS 6.6.5.f
BESIII Offline Software System
Loading...
Searching...
No Matches
Cgem/CgemDigitizerSvc/CgemDigitizerSvc-00-00-24/CgemDigitizerSvc/IonizationGTS.h
Go to the documentation of this file.
1#ifndef IONIZATIONGTS_H
2#define IONIZATIONGTS_H
3
4#include "CgemGeomSvc/ICgemGeomSvc.h"
5
6#include "CgemDigitizerSvc/Ionization.h"
7
8#include <vector>
9#include "TH1F.h"
10#include "TFile.h"
11
12#define m_testing false
14public:
17
18 void init(unsigned int random, ICgemGeomSvc* geomSvc, double magConfig);
19 void setDebugging(bool debugging) {m_debugging = debugging;}
20
21 /* return the number of electrons from ionization */
22 /* particle = 0,1,2,3,4 (e,mu,pi,K,p) */
23 /* p: momentum (GeV/c) */
24 /* trkPosIn & trkPosOut: starting & exit positions (x,y,z) of the track segment in drift area */
25 /* ex, ey, ez: x, y, z of the electron from ionization */
26 void setTrack(int particle, int charge, double p, double trkPosIn[], double trkPosOut[]);
27
28 int getNumberIonE() {return m_nIonE;}
29 double getEx(int nElec) {return m_ex[nElec];}
30 double getEy(int nElec) {return m_ey[nElec];}
31 double getEz(int nElec) {return m_ez[nElec];}
32 double getEt(int nElec) {return m_et[nElec];}
33
34 // ------------------------------------------
35 int getNumberIonC() {return m_nIonC;}
36 double getCx(int nClus) {return m_cx[nClus];}
37 double getCy(int nClus) {return m_cy[nClus];}
38 double getCz(int nClus) {return m_cz[nClus];}
39 double getCt(int nClus) {return m_ct[nClus];}
40
43 void compute_pos(double trkPosIn[], double trkPosOut[],
44 double &x, double &y, double &z);
45 void from_glo_to_loc(double xg, double yg, double zg,
46 double &xl, double &yl, double &zl);
47
48
49private:
50 void clear();
51
52 int m_random;
53 ICgemGeomSvc* m_geomSvc;
54 bool m_debugging;
55 double m_magConfig;
56
57 int m_nIonC;
58 std::vector<double> m_cx;
59 std::vector<double> m_cy;
60 std::vector<double> m_cz;
61 std::vector<double> m_ct;
62
63 int m_nIonE;
64 std::vector<double> m_ex;
65 std::vector<double> m_ey;
66 std::vector<double> m_ez;
67 std::vector<double> m_et;
68
69 double m_track_length_limit;
70 double m_track_length;
71 double m_n_ion_mm;
72
73 TH1F * h_distance_cluster;
74 TH1F *h_nof_cluster;
75 TFile *output;
76};
77
78#endif
void init(unsigned int random, ICgemGeomSvc *geomSvc, double magConfig)
void setTrack(int particle, int charge, double p, double trkPosIn[], double trkPosOut[])
void compute_pos(double trkPosIn[], double trkPosOut[], double &x, double &y, double &z)
bool generate_primary_ele()
void from_glo_to_loc(double xg, double yg, double zg, double &xl, double &yl, double &zl)
int generate_secondary_ele()