]>
Commit | Line | Data |
---|---|---|
d3da6dc4 | 1 | #ifndef AliHMPIDHit_h |
2 | #define AliHMPIDHit_h | |
3 | /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * | |
4 | * See cxx source for full Copyright notice */ | |
423554a3 | 5 | //. |
6 | // HMPID base class to produce hits | |
7 | //. | |
8 | //. | |
d3da6dc4 | 9 | #include <AliHit.h> //base class |
10 | #include <TVector3.h> //ctor | |
1d4857c5 | 11 | #include "AliHMPIDDigit.h" //QdcTot() |
d3da6dc4 | 12 | |
1b10372c | 13 | #include <TRandom.h> |
14 | ||
d3da6dc4 | 15 | class AliHMPIDHit : public AliHit // TObject-AliHit-AliHMPIDHit |
16 | { | |
17 | public: | |
a9b5cfdf | 18 | AliHMPIDHit( ):AliHit( ),fCh(-1),fPid(-1 ),fQ(-1),fLx(0),fLy(0),fT(0) {} //default ctor |
19 | AliHMPIDHit(Int_t c,Float_t &e,Int_t pid,Int_t tid,Float_t x,Float_t y, Float_t time, const TVector3 &p):AliHit(0,tid),fCh(c ),fPid(pid),fQ(0 ),fLx(x),fLy(y),fT(time) {e=QdcTot(e);fX=p.X();fY=p.Y();fZ=p.Z();} | |
20 | AliHMPIDHit(Int_t c,Float_t &e,Int_t pid,Int_t tid,Float_t x,Float_t y, Float_t time ):AliHit( ),fCh(c ),fPid(pid),fQ(0 ),fLx(x),fLy(y),fT(time){e=QdcTot(e);fTrack=tid;}//manual ctor | |
21 | AliHMPIDHit(const AliHMPIDHit &h):AliHit(h),fCh(h.fCh),fPid(h.fPid),fQ(h.fQ),fLx(h.fLx),fLy(h.fLy),fT(h.fT) {}//copy ctor | |
d1bf51e1 | 22 | virtual ~AliHMPIDHit() {} |
d3da6dc4 | 23 | //framework part |
1d4857c5 | 24 | void Print(Option_t *opt="")const; //from TObject to print current status |
25 | void Draw (Option_t *opt=""); //from TObject to Draw this hit | |
d3da6dc4 | 26 | //private part |
1d4857c5 | 27 | Int_t Ch ( )const{return fCh; } //Chamber |
28 | void Hit2Sdi(TClonesArray *pSdiLst,Int_t n=1)const; //add sdigits of this hit to the list | |
29 | Float_t LorsX ( )const{return fLx; } //hit X position in LORS, [cm] | |
30 | Float_t LorsY ( )const{return fLy; } //hit Y position in LORS, [cm] | |
a9b5cfdf | 31 | Float_t HitTime( )const{return fT; } //hit formation time, [sec] |
1d4857c5 | 32 | Int_t Pid ( )const{return fPid; } //PID |
33 | Float_t Q ( )const{return fQ; } //total charge, [QDC] | |
f3bae3e2 | 34 | inline Float_t QdcTot (Float_t e ); //calculate total charge of the hit |
1d4857c5 | 35 | Int_t Tid ( )const{return fTrack; } //TID |
f3bae3e2 | 36 | void SetQ (Float_t q ) {fQ=q; } //for debugging... |
1d4857c5 | 37 | protected: //AliHit has fTrack,fX,fY,fZ |
d3da6dc4 | 38 | Int_t fCh; //Chamber |
39 | Int_t fPid; //PID | |
3c6274c1 | 40 | Float_t fQ; //total charge [QDC] |
d1bf51e1 | 41 | Float_t fLx; //hit X position in chamber LORS, [cm] |
42 | Float_t fLy; //hit Y position in chamber LORS, [cm] | |
a9b5cfdf | 43 | Float_t fT; //hit formation time, [sec] |
3c6274c1 | 44 | ClassDef(AliHMPIDHit,5) //HMPID hit class |
d3da6dc4 | 45 | };//class AliHMPIDhit |
3c6274c1 | 46 | //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
f3bae3e2 | 47 | Float_t AliHMPIDHit::QdcTot(Float_t e) |
3c6274c1 | 48 | { |
49 | // Samples total charge of the hit | |
1d4857c5 | 50 | // Arguments: e- hit energy [GeV] for mip Eloss for photon Etot |
3c6274c1 | 51 | // Returns: total QDC |
1d4857c5 | 52 | Int_t pc,px,py; |
ae5a42aa | 53 | AliHMPIDParam::Lors2Pad(fLx,fLy,pc,px,py); |
54 | if(py<0) fQ=0; | |
55 | else { | |
56 | Float_t y=AliHMPIDParam::LorsY(pc,py); | |
1d4857c5 | 57 | fLy=((y-fLy)>0)?y-0.2:y+0.2; //shift to the nearest anod wire |
58 | ||
59 | Float_t x=(fLx > 66.6)? fLx-66.6:fLx; //sagita is for PC (0-64) and not for chamber | |
3c6274c1 | 60 | Float_t qdcEle=34.06311+0.2337070*x+5.807476e-3*x*x-2.956471e-04*x*x*x+2.310001e-06*x*x*x*x; //reparametrised from DiMauro |
61 | ||
dc787dc0 | 62 | Int_t iNele=Int_t(e/26e-9); if(iNele<1) iNele = 1; //number of electrons created by hit, if photon e=0 implies iNele=1 |
1d4857c5 | 63 | fQ=0; |
64 | for(Int_t i=1;i<=iNele;i++){ | |
65 | Double_t rnd=gRandom->Rndm(); if(rnd==0) rnd=1e-12; //1e-12 is a protection against 0 from rndm | |
66 | fQ-=qdcEle*TMath::Log(rnd); | |
67 | } | |
ae5a42aa | 68 | } |
3c6274c1 | 69 | return fQ; |
70 | } | |
d1bf51e1 | 71 | //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
1d4857c5 | 72 | |
d3da6dc4 | 73 | #endif |