StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
StFtpcSlowSimCluster.hh
1 // $Id: StFtpcSlowSimCluster.hh,v 1.4 2003/09/02 17:58:16 perev Exp $
2 // $Log: StFtpcSlowSimCluster.hh,v $
3 // Revision 1.4 2003/09/02 17:58:16 perev
4 // gcc 3.2 updates + WarnOff
5 //
6 // Revision 1.3 2002/06/07 09:55:41 fsimon
7 // Additional debug info to trace electron drift
8 //
9 // Revision 1.2 2001/03/06 23:35:58 jcs
10 // use database instead of params
11 //
12 // Revision 1.1 2000/11/23 10:16:43 hummler
13 // New FTPC slow simulator in pure maker form
14 //
15 //
17 // Author: W.G.Gong
18 // Email: gong@mppmu.mpg.de
19 // Date: Oct 25, 1996
21 #ifndef STAR_StFtpcSlowSimCluster
22 #define STAR_StFtpcSlowSimCluster
23 
24 #include "math.h"
25 
26 class StFtpcSlowSimField;
27 class StFtpcParamReader;
28 class StFtpcDbReader;
29 
30 //
31 // class cluster will diffuse and drift a cluster of electrons
32 // generated by ionization
33 //
35 {
36 public:
37 
39  StFtpcDbReader *dbReader,
40  StFtpcSlowSimField *field,
41  const float el, const float rad_offset,
42  const float pad_offset, const float r,
43  const float ph, const float time,
44  const int call_padrow);
45  // constructor
46  ~StFtpcSlowSimCluster(); // destructor
47 
48  void DriftDiffuse(StFtpcSlowSimField *field);
49  // drift&diffuse in radial/azimuthal dir.
50 
51  void Print() const;
52  float GetElectron() const {return electron;}
53  // get the number of electrons
54  float GetSigRad() const {return ::sqrt(sigma_rad_squared);}
55  // get the radial sigma
56  float GetSigPhi() const {return ::sqrt(sigma_phi_squared);}
57  // get the azimuthal sigma
58  float GetRadOff() const { return radialDipWidth;}
59  // get the radial dip width
60  float GetPadOff() const {return azimuthalCrossWidth;}
61  // get the azimuthal crossing width
62  float GetRad() const {return currentRadius;}
63  // get the radial position
64  float GetPhi() const {return currentPhi;}
65  // get the azimuthal position
66  float GetDriftTime() const {return drift_time;}
67  // get the accumulated drift time in usec
68 
69 private:
70  int mIntDiffCoarseness;//number of steps skipped by diffusion
71  float mFlDiffCoarseness;// correction for skipped steps;
72  float outerRadius; // limit of drift range
73  float deltaRadius; // delta radius in one drift step
74  float twoDeltaRadius; // 2*deltaRadius
75  float electron; // number of electrons in a cluster
76  float electronLoss; // gas attenuation per drift step
77  float sigma_rad_squared; // sigma width in radial dir squared
78  float sigma_phi_squared; // sigma width in azimuthal dir sq
79  float radialDipWidth; // radial dip width
80  float azimuthalCrossWidth; // azimuthal crossing width
81  float currentRadius; // radial position in cm
82  float currentPhi; // azimuthal position in deg
83  float drift_time; // accumulated drift time in usec.
84  int padrow; // self-explanatory (needed for drift field)
85  int original_padrow; // only for debug output
86 
87 
88 };
89 
90 #endif
91 
92 
93 
94 
95