FairRoot/PandaRoot
PndLmdCalStrip.h
Go to the documentation of this file.
1 /*
2  * PndLmdCalStrip.h *
3  * Created on: Jul 28, 2009
4  * Author: huagen
5  */
6 //*************************************************************************************
7 // this class PndLmdCalStrip will handle the different strip structure of the silicon
8 //sensor.The different strip structure shall be covered, for example, short strips in
9 // two segments, curved strips in one segment etc. Due to thin sensor the strips shall
10 // be made in one side.
11 //The charge diffusion after ionization will be taken into consideration. The gaussian
12 // smearing with sigma 8um was employeed for the charge diffussion
13 // For each strip fired the noise shall be added
14 //**************************************************************************************
15 
16 #ifndef PNDLMDCALSTRIP_H_
17 #define PNDLMDCALSTRIP_H_
18 
19 #include <iostream>
20 #include <cmath>
21 #include "PndLmdDigiPara.h"
22 #include "TRandom3.h"
23 
24 
25 #include "PndLmdStrips.h"
26 
27 #include "TVector2.h"
28 #include <vector>
29 #include "PndDetectorList.h"
30 
32 {
33 public:
34  //default constructor
36  //pitch @param the width of the strip
37  //orient @param the strip orient angle cross with x axis
38  //firstStripAnchor @param the first pitch point
39  //threshold @param the threshold of the signal
40  //noise @param the electric noise
41  //nrStrips @param the number of strips
42  //nrFeChannels @param the number of channels per FE modules
43  PndLmdCalStrip(Double_t pitch,Double_t orient, Int_t nrStrips, Int_t nrFeChannels, const TVector2& firstStripAnchor,
45 
46  //fdigipara @ the digitization parameters stored with ASCii file
47  //segment @ the segment of the sensor, left or right
48  PndLmdCalStrip(const PndLmdDigiPara *digipara, SensorSegment segment = kLEFT);
49  //for curve strips
50 // PndLmdCalStrip(const PndLmdDigiPara *digipara, SensorSide side = kTOP);
51 
53 
54  //public method for strips number calculation
55  std::vector<PndLmdStrips> GetStrips(Double_t inx, Double_t iny, Double_t inz,
56  Double_t outx, Double_t outy, Double_t outz,Double_t eloss);
57  //digi the strips
58  std::vector<PndLmdStrips> DigiStripFromPoint(Double_t inx, Double_t iny, Double_t inz,
59  Double_t outx, Double_t outy, Double_t outz, Double_t eloss);
60 
61  std::vector<PndLmdStrips> GetCurveStrip(Double_t inx, Double_t iny, Double_t inz,
62  Double_t outx, Double_t outy, Double_t outz, Double_t eLoss);
63 
64  //calculate the channels
65  Int_t CalChannelFromStrip(Int_t stripNr);
66 
67  //calculate the FE number
68  Int_t CalFeFromStrip(Int_t stripNr);
69 
70  //Smear noise to the signal
71  Double_t AddNoise(Double_t charge);
72 
73  //charge diffusion during collection
75 
76  void print() const;
77 
78 private:
79  Double_t fPitch; //the width of strip
80  Double_t fOrient; //the strip orientation
81  TVector2 fAnchor; //anchor point for first strip
82  Int_t fNrStrips; //the number of strips in active area
83  Int_t fNrFEChannels; //the number of channels per FE
86  TVector2 fStripDir;
87  TVector2 fOrthoDir;
88  TRandom3* fRNG;
90 
91  //calculate the strip number based on the point information
92  //the coordinate x, and y in the local coordinate system of the sensor
93  //return the strip number with double_t
95 
97 
98  //the conversion from Eloss to charge.
100 
101 
103 
104 };
105 
106 
107 
108 #endif /* PNDLMDCALSTRIP_H_ */
Double_t ChargeDiffusion(Double_t u, Double_t a, Double_t path, Double_t dir, Double_t Q)
TVector2 fOrthoDir
double eloss
Definition: anaLmdSim.C:34
Double_t AddNoise(Double_t charge)
std::vector< PndLmdStrips > DigiStripFromPoint(Double_t inx, Double_t iny, Double_t inz, Double_t outx, Double_t outy, Double_t outz, Double_t eloss)
Double_t sigma[nsteps]
Definition: dedx_bands.C:65
Double_t fOrient
std::vector< PndLmdStrips > GetStrips(Double_t inx, Double_t iny, Double_t inz, Double_t outx, Double_t outy, Double_t outz, Double_t eloss)
int nrStrips
Definition: anaLmdDigi.C:76
Double_t ChargeFromEloss(Double_t eloss) const
Int_t a
Definition: anaLmdDigi.C:126
Double_t CalCurveStripFromPoint(Double_t x, Double_t y)
Double_t
int nrFeChannels
Definition: anaLmdDigi.C:75
ClassDef(PndLmdCalStrip, 3)
Int_t CalFeFromStrip(Int_t stripNr)
double threshold
Double_t x
Int_t CalChannelFromStrip(Int_t stripNr)
void print() const
double orient
Double_t y
Double_t fThreshold
double noise
Double_t CalStripFromPoint(Double_t x, Double_t y)
std::vector< PndLmdStrips > GetCurveStrip(Double_t inx, Double_t iny, Double_t inz, Double_t outx, Double_t outy, Double_t outz, Double_t eLoss)
TRandom3 * fRNG
TVector2 fAnchor
TVector2 fStripDir