FairRoot/PandaRoot
PndSdsCalcStrip.h
Go to the documentation of this file.
1 //
2 // C++ Interface: PndSdsCalcStrip
3 //
4 // Description:
5 //
6 //
7 // Authors: HG Zaunick <hg.zaunick@physik.tu-dresden.de>, (C) 2007
8 // R Kliemt (Tu Dresden,Uni Bonn)
9 //
10 // Copyright: See COPYING file that comes with this distribution
11 //
12 //
13 #ifndef PNDSDSCALCSTRIP_H
14 #define PNDSDSCALCSTRIP_H
15 
16 #include "PndSdsStrip.h"
17 //#include "FairGeoVector.h"
18 #include "PndSdsStripDigiPar.h"
19 
20 #include <TVector2.h>
21 
22 #include <iostream>
23 #include <vector>
24 
25 #include "PndDetectorList.h"
26 
28 
34  {
35  public :
41 
55  Int_t nrStrips, Int_t nrFeChannels,
56  const TVector2& firstStripAnchor,
58 
59  PndSdsCalcStrip(const PndSdsStripDigiPar* digipar, SensorSide side = kTOP);
60 
72  std::vector<PndSdsStrip> GetStrips (Double_t inx, Double_t iny, Double_t inz,
73  Double_t outx, Double_t outy, Double_t outz,
74  Double_t eLoss);
75 
76  // Calculate without diffusion
77  std::vector<PndSdsStrip> GetStripsNoDif(Double_t nuIn, Double_t nuOut, Double_t Q);
78 
79  // Calculate with diffusion
80  std::vector<PndSdsStrip> GetStripsDif(Double_t nuIn, Double_t nuOut, Double_t Q);
82 
83  // for debugging; call one of the GetStrips* but returns the number of strips and int arrays to their channel/charge
84  Int_t GetStripsAlternative(Double_t nuIn, Double_t nuOut, Double_t Q, Int_t mode, std::vector<Int_t>& indice, std::vector<Double_t>& charges);
85 
91  Int_t CalcFEfromStrip(Int_t stripNr) const;
92 
98  Int_t CalcChannelfromStrip(Int_t stripNr) const;
99 
107  void CalcFeChToStrip(Int_t fe, Int_t channel, Int_t& strip, enum SensorSide& side) const;
108  void CalcStripPointOnLine(const Double_t strip, TVector2& point) const;
109 
113  const TVector2 GetStripDirection() const {return fStripDir;}
114 
115  void SetVerboseLevel(Int_t level){ fVerboseLevel = level;}
116  //std::ostream& operator<<(std::ostream& out); // not implemented
117  Double_t GetThreshold() const {return fThreshold;}
118  Double_t GetNoise() const {return fNoise;}
119 
120  void Print() const;
121 
122  private :
125  Int_t fNrStrips;
127  TVector2 fAnchor;
131  TVector2 fStripDir;
132  TVector2 fOrthoDir;
134 
142 
143  Double_t ChargeFromEloss(Double_t eloss) const {return eloss/(3.61e-9);}
144  void InjectStripCharge(std::vector<PndSdsStrip>& array, Int_t istrip, Double_t charge);
145  Double_t SmearCharge(Double_t charge);
146  };
147 
148 #endif /* PNDSDSCALCSTRIP_H */
Double_t SmearCharge(Double_t charge)
Int_t fNrStrips
strip orientation angle to x axis
void Print() const
Int_t CalcFEfromStrip(Int_t stripNr) const
double eloss
Definition: anaLmdSim.C:34
Class for calculating strip indices from wafer hits.
int nrStrips
Definition: anaLmdDigi.C:76
const TVector2 GetStripDirection() const
Int_t fNrFeChannels
Nr. of strips on active area.
Double_t fCSigma
ENC.
std::vector< PndSdsStrip > GetStripsDif(Double_t nuIn, Double_t nuOut, Double_t Q)
Int_t fVerboseLevel
vector orthogonal to strip direction
Int_t GetStripsAlternative(Double_t nuIn, Double_t nuOut, Double_t Q, Int_t mode, std::vector< Int_t > &indice, std::vector< Double_t > &charges)
Int_t mode
Definition: autocutx.C:47
Double_t
int nrFeChannels
Definition: anaLmdDigi.C:75
TClonesArray * point
Definition: anaLmdDigi.C:29
Digitization Parameter Class for MVD-Strip part.
SensorSide
std::vector< PndSdsStrip > GetStripsNoDif(Double_t nuIn, Double_t nuOut, Double_t Q)
Double_t CalcFk(Double_t strip, Double_t x, Double_t sig)
double threshold
Int_t CalcChannelfromStrip(Int_t stripNr) const
TVector2 fOrthoDir
vector perpendicular to strip direction
void InjectStripCharge(std::vector< PndSdsStrip > &array, Int_t istrip, Double_t charge)
void CalcFeChToStrip(Int_t fe, Int_t channel, Int_t &strip, enum SensorSide &side) const
Double_t x
Double_t fOrient
strip pitch (cm)
Double_t GetThreshold() const
int fe
Definition: anaLmdDigi.C:67
double orient
Double_t CalcStripFromPoint(Double_t x, Double_t y)
Double_t y
TVector2 fStripDir
Charge diffusion.
Double_t fThreshold
anchor point on first strip
Double_t fNoise
charge threshold
double noise
Double_t GetNoise() const
std::vector< PndSdsStrip > GetStrips(Double_t inx, Double_t iny, Double_t inz, Double_t outx, Double_t outy, Double_t outz, Double_t eLoss)
TVector2 fAnchor
Nr of Channels per FE.
void SetVerboseLevel(Int_t level)
Double_t ChargeFromEloss(Double_t eloss) const
void CalcStripPointOnLine(const Double_t strip, TVector2 &point) const