]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PHOS/AliPHOSv4.h
a quick update to correct a few coding conventions but RS2 and GC2 have been ignored
[u/mrichter/AliRoot.git] / PHOS / AliPHOSv4.h
1 #ifndef ALIPHOSV4_H
2 #define ALIPHOSV4_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 // Implementation of the PHOS manager class for fast simulations     
10 // Tracks particles until the reach a grossly designed PHOS module
11 // Modify the particles property (momentum, energy, type) according to
12 //  the PHOS response function. The result is called a virtual reconstructed
13 //  particle.                                
14 //                  
15 //*-- Author: Yves Schutz (SUBATECH)
16
17 // --- ROOT system ---
18 #include "TClonesArray.h"
19 #include "TRandom.h"
20
21 // --- AliRoot header files ---
22 #include "AliPHOS.h"
23 #include "AliPHOSGeometry.h"
24 #include "AliPHOSPID.h"
25 #include "AliPHOSFastRecParticle.h"
26
27 class AliPHOSv4 : public AliPHOS {
28
29 public:
30
31   AliPHOSv4() {
32     //ctor
33     fGeom=0;
34   }
35   AliPHOSv4(const char *name, const char *title="") ;
36   AliPHOSv4(const AliPHOSv4 & fast) {
37     // cpy ctor: no implementation yet
38     // requested by the Coding Convention
39     assert(0==1) ; 
40   }
41   virtual ~AliPHOSv4(void) ;
42
43   virtual void   AddHit( Int_t shunt, Int_t primary, Int_t track, Int_t id, Float_t *hits ) {
44     // useless since there are no hits
45     assert(0==1) ; 
46   }
47   void           AddRecParticle(const AliPHOSFastRecParticle & rp) ; // adds primary particle to the RecParticles list
48   virtual void   BuildGeometry(void) ;                               // creates the geometry for the ROOT display
49   virtual void   CreateGeometry(void) ;                              // creates the geometry for GEANT
50   Float_t        GetBigBox(Int_t index) ;                             
51   virtual AliPHOSGeometry * GetGeometry() {
52     // gets the pointer to the AliPHOSGeometry unique instance  
53     return fGeom ; 
54   }  
55   virtual void   Init(void) ;                                        // does nothing
56   virtual Int_t  IsVersion(void) const {
57     // Gives the version number 
58     return 4 ; 
59   }
60
61   void    MakeBranch(Option_t* opt) ;
62   Double_t MakeEnergy(const Double_t energy) ;                       // makes the detected energy    
63   TVector3 MakePosition(const Double_t energy, const TVector3 pos, const Double_t th, const Double_t ph) ; 
64                                                                      // makes the detected position
65   void MakeRecParticle(const Int_t modid, const TVector3 pos, AliPHOSFastRecParticle & rp) ;  // makes a reconstructes particle from primary
66   Int_t   MakeType(AliPHOSFastRecParticle & rp) ;                    // gets the detected type of particle
67   // gets TClonesArray of reconstructed particles
68   AliPHOSFastRecParticle::FastRecParticlesList * FastRecParticles() { return fFastRecParticles ; } 
69   virtual void ResetPoints() ; 
70   void         ResetFastRecParticles() ; 
71   void         SetBigBox(Int_t index, Float_t value) ;                             
72   Double_t     SigmaE(Double_t energy) ;    // calulates the energy resolution at a given Energy                           
73   Double_t     SigmaP(Double_t energy, Int_t inc) ; // calulates the position resolution at a given Energy at a given incidence                           
74   virtual void StepManager(void) ;          // does the tracking through PHOS and a preliminary digitalization
75   virtual TString Version(void){ 
76     // As IsVersion
77     return TString("v4") ; 
78   }
79
80   AliPHOSv4 & operator = (const AliPHOSv4 & )  {
81     // assignement operator requested by coding convention
82     // but not needed
83     assert(0==1) ;
84     return *this ; 
85   }
86   
87 private:
88   
89   Float_t fBigBoxX ;                         // main box containing all PHOS (EMC+PPSD)
90   Float_t fBigBoxY ;                         // main box containing all PHOS (EMC+PPSD)
91   Float_t fBigBoxZ ;                         // main box containing all PHOS (EMC+PPSD)
92   AliPHOSFastRecParticle::FastRecParticlesList * fFastRecParticles ; // list of particles modified by the response function 
93   AliPHOSGeometry * fGeom ;                  // geometry definition
94   Int_t fNRecParticles ;                     // number of detected particles
95   TRandom fRan ;                             // random number generator
96   Double_t fResPara1 ;                       // parameter for the energy resolution dependence  
97   Double_t fResPara2 ;                       // parameter for the energy resolution dependence  
98   Double_t fResPara3 ;                       // parameter for the energy resolution dependence 
99   Double_t fPosParaA0 ;                      // parameter for the position resolution
100   Double_t fPosParaA1 ;                      // parameter for the position resolution 
101   Double_t fPosParaB0 ;                      // parameter for the position resolution 
102   Double_t fPosParaB1 ;                      // parameter for the position resolution 
103   Double_t fPosParaB2 ;                      // parameter for the position resolution
104
105   ClassDef(AliPHOSv4,1)  //  Implementation of the PHOS manager class for fast simulations  
106
107 };
108
109 #endif // AliPHOSV4_H