LCOV - code coverage report
Current view: top level - ITS/ITSsim - AliITShit.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 24 53 45.3 %
Date: 2016-06-14 17:26:59 Functions: 25 54 46.3 %

          Line data    Source code
       1             : #ifndef ALIITSHIT_H
       2             : #define ALIITSHIT_H
       3             : /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
       4             :  * See cxx source for full Copyright notice                               */
       5             : 
       6             : /* $Id$ */
       7             : 
       8             : ////////////////////////////////////////////////////////////////////////
       9             : // Version: 0
      10             : // Written by Rene Brun, Federico Carminati, and Roberto Barbera
      11             : //
      12             : // Version: 1
      13             : // Modified and documented by Bjorn S. Nilsen
      14             : // July 11 1999
      15             : //
      16             : // AliITShit is the hit class for the ITS. Hits are the information
      17             : // that comes from a Monte Carlo at each step as a particle mass through
      18             : // sensitive detector elements as particles are transported through a
      19             : // detector.
      20             : //
      21             : // Data members:
      22             : //
      23             : // Int_t fTrack
      24             : //     See AliHit for a full description. The track number of the track
      25             : // that made this hit.
      26             : //
      27             : // Float_t fX
      28             : //     See AliHit for a full description. The global x position of the
      29             : // hit (in the standard units of the Monte Carlo).
      30             : //
      31             : // Float_t fY
      32             : //     See AliHit for a full description. The global y position of the
      33             : // hit (in the standard units of the Monte Carlo).
      34             : //
      35             : // Float_t fZ
      36             : //     See AliHit for a full description. The global z position of the
      37             : // hit (in the standard units of the Monte Carlo).
      38             : //
      39             : // Int_t fStatus
      40             : //     The track status flag. This flag indicates the track status
      41             : // at the time of creating this hit. It is made up of the following 8
      42             : // status bits from highest order to lowest order bits
      43             : // 0           :  IsTrackAlive():    IsTrackStop():IsTrackDisappeared():
      44             : // IsTrackOut():IsTrackExiting():IsTrackEntering():IsTrackInside()     .
      45             : // See AliMC for a description of these functions. If the function is
      46             : // true then the bit is set to one, otherwise it is zero.
      47             : //
      48             : // Int_t fLayer
      49             : //     The layer number of the detector that contains this hit. See
      50             : // AliITSgeom and AliITSv? for a description of the geometry.
      51             : //
      52             : // Int_t fLadder
      53             : //     The ladder number of the detector that contains this hit. See
      54             : // AliITSgeom and AliITSv? for a description of the geometry.
      55             : //
      56             : // Int_t fDet
      57             : //     The detector number of the detector that contains this hit. See
      58             : // AliITSgeom and AliITSv? for a description of the geometry.
      59             : //
      60             : // Float_t fPx
      61             : //     The x momentum, in global coordinates, of the particle that
      62             : // "created" the hit at the time and position of the hit. The units
      63             : // are those determined by the Monte Carlo.
      64             : //
      65             : // Float_t fPy
      66             : //     The y momentum, in global coordinates, of the particle that
      67             : // "created" the hit at the time and position of the hit. The units
      68             : // are those determined by the Monte Carlo.
      69             : //
      70             : // Float_t fPz
      71             : //     The z momentum, in global coordinates, of the particle that
      72             : // "created" the hit at the time and position of the hit. The units
      73             : // are those determined by the Monte Carlo.
      74             : //
      75             : // Float_t fDestep
      76             : //     The energy lost by the particle during the step ending in this
      77             : // hit. The units are those determined by the Monte Carlo.
      78             : //
      79             : // Float_t fTof
      80             : //     The time of flight associated with the particle ending in this
      81             : // hit. The time is typically measured from the point of creation of the
      82             : // original particle (if this particle is a daughter).  The units
      83             : // are those determined by the Monte Carlo.
      84             : //
      85             : //
      86             : ////////////////////////////////////////////////////////////////////////
      87             : #include <TLorentzVector.h>
      88             : 
      89             : #include "AliHit.h" 
      90             : 
      91             : class TParticle;
      92             : 
      93             : using std::istream;
      94             : using std::ostream;
      95             : class AliITShit : public AliHit {
      96             : 
      97             :  public:
      98             :     AliITShit();// Default consrtructor
      99             :     // Old Standard Constructor
     100             :     AliITShit(Int_t shunt, Int_t track, Int_t *vol, Float_t *hits);
     101             :     // New Standard Constructor
     102             :     AliITShit(Int_t shunt,Int_t track,Int_t *vol,Float_t edep,Float_t tof,
     103             :               TLorentzVector &x,TLorentzVector &x0,TLorentzVector &p);
     104             :     // Copy Constructor
     105             :     AliITShit(const AliITShit &h);
     106             :     // Equals operator
     107             :     AliITShit& operator=(const AliITShit &h);
     108             :     // Default destructor
     109       27724 :     virtual ~AliITShit() {};
     110             :     // Get Hit information functions.
     111             :     // virtual int GetTrack() const {return fTrack;} // define in AliHit
     112             :     // virtual void SetTrack(int track) const {fTrack=track;) // AliHit
     113        2714 :     virtual void SetModule(Int_t mod){fModule=mod;};
     114             :     virtual void SetShunt(Int_t shunt);
     115        2714 :     virtual void SetPosition(TLorentzVector &x){fX=x.X();fY=x.Y();fZ=x.Z();}
     116        2714 :     virtual void SetStartPosition(TLorentzVector &x){fx0=x.X();fy0=x.Y();
     117        1357 :                                                      fz0=x.Z();}
     118        2714 :     virtual void SetTime(Float_t t){fTof = t;}
     119        2714 :     virtual void SetStartTime(Float_t t){ft0 = t;}
     120        2714 :     virtual void SetStatus(Int_t stat){fStatus = stat;}
     121        2714 :     virtual void SetStartStatus(Int_t stat){fStatus0 = stat;}
     122        2714 :     virtual void SetEdep(Float_t de){fDestep = de;}
     123        2714 :     virtual void SetMomentum(TLorentzVector &p){fPx=p.Px();fPy=p.Py();
     124        1357 :                                                 fPz=p.Pz();}
     125             :     virtual Int_t GetTrackStatus() const {//returns the status code
     126           0 :         return fStatus;}
     127             :     virtual Int_t GetTrackStatus0() const {//returns the status code
     128           0 :         return fStatus0;}
     129           0 :     virtual Int_t GetLayer() const{Int_t a,b,c;// returns the layer number
     130           0 :     GetDetectorID(a,b,c); return a;}
     131           0 :     virtual Int_t GetLadder() const{Int_t a,b,c;// returns the ladder number
     132           0 :     GetDetectorID(a,b,c); return b;}
     133           0 :     virtual Int_t GetDetector() const{Int_t a,b,c;//returns the detector number
     134           0 :     GetDetectorID(a,b,c); return c;}
     135             :         // returns the detector ID
     136             :     virtual void  GetDetectorID(Int_t &layer,Int_t &ladder,Int_t &det)const;
     137           0 :     virtual Int_t GetModule(){return fModule;};
     138        4470 :     virtual Float_t GetIonization() const {return fDestep;}//returns the Destep
     139             :     //
     140             :     virtual void GetPositionG(Float_t &x,Float_t &y,Float_t &z)const {
     141             :         // returns the position in the Global frame
     142           0 :         x=fX;y=fY;z=fZ;return;};
     143             :     virtual void GetPositionG(Double_t &x,Double_t &y,Double_t &z)const {
     144             :         // returns the position in the Global frame
     145           0 :         x=fX;y=fY;z=fZ;return;};
     146             :     virtual Float_t GetTOF() const {// returns the time of flight
     147        2808 :         return fTof;}
     148             :     // Returns particle 3 position at this hit in global coordinates.
     149             :     virtual void GetPositionG(Float_t &x,Float_t &y,Float_t &z,Float_t &tof)
     150             :         const {// returns the position in the Global frame and the time of
     151             :         // flight
     152           0 :         x=fX;y=fY;z=fZ,tof=fTof;return;};
     153             :     virtual void GetPositionG(Double_t &x,Double_t &y,Double_t &z,Double_t &t)
     154             :         const {// Returns particle 3 position and the time of flight at this
     155             :         // hit in global coordinates.
     156           0 :         x=fX;y=fY;z=fZ,t=fTof;return;};
     157             :     virtual Float_t GetXG()const {// Returns particle X position at this hit
     158             :         // in global coordinates.
     159        1892 :         return fX;}
     160             :     virtual Float_t GetYG()const {// Returns particle X position at this hit
     161             :         // in global coordinates.
     162        1892 :         return fY;}
     163             :     virtual Float_t GetZG()const {// Returns particle Z position at this hit
     164             :         // in global coordinates.
     165         946 :         return fZ;}
     166             :     // Returns particle 3 position at this hit in global coordinates.
     167             :     virtual void GetPositionG0(Float_t &x,Float_t &y,Float_t &z,Float_t &tof)
     168             :         const {// returns the initial position in the Global frame and the
     169             :         // time of flight
     170           0 :         x=fx0;y=fy0;z=fz0,tof=fTof;return;};
     171             :     // Returns particle 3 position at this hit in global coordinates.
     172             :     virtual void GetPositionG0(Double_t &x,Double_t &y,Double_t &z,
     173             :                                Double_t &tof)const {
     174             :         // returns the initial position in the Global frame and the
     175             :         // time of flight
     176           0 :         x=fx0;y=fy0;z=fz0,tof=fTof;return;};
     177             :     virtual void GetPositionL(Float_t &x,Float_t &y,Float_t &z){
     178             :         // Returns particle 3 position at this hit in local coordinates.
     179           0 :         Float_t tf;GetPositionL(x,y,z,tf);}
     180             :     virtual void GetPositionL(Float_t &x,Float_t &y,Float_t &z,Float_t &tof);
     181             :     virtual void GetPositionL(Double_t &x,Double_t &y,Double_t &z){
     182             :         // Returns particle 3 position at this hit in local coordinates.
     183        1762 :         Float_t xf,yf,zf,tf;GetPositionL(xf,yf,zf,tf);x=xf,y=yf;z=zf;}
     184             :     virtual void GetPositionL(Double_t &x,Double_t &y,Double_t &z,Double_t &t){
     185             :         // Returns particle 3 position and the time of flight at this hit
     186             :         // in local coordinates.
     187         816 :         Float_t xf,yf,zf,tf;GetPositionL(xf,yf,zf,tf);x=xf,y=yf;z=zf;t=tf;}
     188             :     // Returns particle 3 initial position and the time of flight at this hit
     189             :     // in local coordinates.
     190             :     virtual void GetPositionL0(Double_t &x,Double_t &y,Double_t &z,
     191             :                                Double_t &t);
     192             :     virtual Float_t GetXL(){
     193             :         // Returns particle X position at this hit in local coordinates.
     194         946 :         Float_t xf,yf,zf,tf;GetPositionL(xf,yf,zf,tf);return xf;}
     195             :     virtual Float_t GetYL(){
     196             :         // Returns particle Y position at this hit in local coordinates.
     197         946 :         Float_t xf,yf,zf,tf;GetPositionL(xf,yf,zf,tf);return yf;}
     198             :     virtual Float_t GetZL(){
     199             :         // Returns particle Z position at this hit in local coordinates.
     200         946 :         Float_t xf,yf,zf,tf;GetPositionL(xf,yf,zf,tf);return zf;}
     201             :   
     202             :     // Get Monti Carlo information about hit.
     203             :     virtual void GetMomentumG(Float_t &px,Float_t &py,Float_t &pz)const {
     204             :         // returns the particle momentum in the Global frame
     205           0 :         px=fPx;py=fPy;pz=fPz;return;};
     206             :     virtual void GetMomentumG(Double_t &px,Double_t &py,Double_t &pz)const {
     207             :         // returns the particle momentum in the Global frame
     208           0 :         px=fPx;py=fPy;pz=fPz;return;};
     209             :     virtual Float_t GetPXG()const {// Returns particle X momentum at this hit
     210             :         // in global coordinates.
     211           0 :         return fPx;}
     212             :     virtual Float_t GetPYG()const {// Returns particle Y momentum at
     213             :         // this hit in global coordinates.
     214           0 :         return fPy;}
     215             :     virtual Float_t GetPZG()const {// Returns particle Z momentum at
     216             :         // this hit in global coordinates.
     217           0 :         return fPz;}
     218             :     // Returns particle Z momentum at this hit in local coordinates.
     219             :     virtual TParticle * GetParticle() const; // Returns ptr to this particle.
     220             :     Bool_t StatusInside() const {// checks if the particle is "inside"
     221           0 :         if((fStatus&0x0001)==0) return kFALSE;else return kTRUE;}
     222             :     Bool_t StatusEntering() const {// checks if the particle is "entering"
     223        3524 :         if((fStatus&0x0002)==0) return kFALSE;else return kTRUE;}
     224             :     Bool_t StatusExiting() const {// checks if the particle is "exiting"
     225           0 :         if((fStatus&0x0004)==0) return kFALSE;else return kTRUE;}
     226             :     Bool_t StatusOut() const {// checks if the particle is "out"
     227           0 :         if((fStatus&0x0008)==0) return kFALSE;else return kTRUE;}
     228             :     Bool_t StatusDisappeared() const {// checks if the part. is "disappeared"
     229           0 :         if((fStatus&0x00010)==0) return kFALSE;else return kTRUE;}
     230             :     Bool_t StatusStop() const {// checks if the particle is "stopped"
     231           0 :         if((fStatus&0x00020)==0) return kFALSE;else return kTRUE;}
     232             :     Bool_t StatusAlive() const {// checks if the particle is "alive"
     233           0 :         if((fStatus&0x00030)==0) return kFALSE;else return kTRUE;}
     234             :     // Prints out the content of this class in ASCII format.
     235             :     void Print(ostream *os) const; 
     236             :     // Reads in the content of this class in the format of Print
     237             :     void Read(istream *is);
     238           0 :     virtual void Print(Option_t *option="") const {TObject::Print(option);}
     239           0 :     virtual Int_t Read(const char *name) {return TObject::Read(name);}
     240             : 
     241             : 
     242             :  protected:
     243             :     Int_t     fStatus; // Track Status
     244             :     Int_t     fModule; // Module number 
     245             :     Float_t   fPx;     // PX of particle at the point of the hit
     246             :     Float_t   fPy;     // PY of particle at the point of the hit
     247             :     Float_t   fPz;     // PZ of particle at the point of the hit
     248             :     Float_t   fDestep; // Energy deposited in the current step
     249             :     Float_t   fTof;    // Time of flight at the point of the hit
     250             :     Int_t     fStatus0;// Track Status of Starting point
     251             :     Float_t   fx0;     // Starting point of this step
     252             :     Float_t   fy0;     // Starting point of this step
     253             :     Float_t   fz0;     // Starting point of this step
     254             :     Float_t   ft0;     // Starting point of this step
     255             : 
     256         120 :     ClassDef(AliITShit,3)  //Hits object for set:ITS
     257             :          
     258             : }; 
     259             : // Input and output function for standard C++ input/output.
     260             : ostream& operator<<(ostream &os,AliITShit &source);
     261             : istream& operator>>(istream &os,AliITShit &source);
     262             : 
     263             : #endif

Generated by: LCOV version 1.11