]> git.uio.no Git - u/mrichter/AliRoot.git/blob - ITS/UPGRADE/AliITSupgrade.h
ITS-upgrade simulation/reconstruction code (C. Terrevoli, A. Mastroserio)
[u/mrichter/AliRoot.git] / ITS / UPGRADE / AliITSupgrade.h
1 #ifndef ALIITSUPGRADE_H
2 #define ALIITSUPGRADE_H
3
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5  * See cxx source for full Copyright notice                               */
6
7 /* $Id$ */
8
9 //========================================================================
10 //
11 //      Geometry of the Inner Tracking System Upgrade based on TGeo
12 //
13 //
14 //   Authors: A. Mastroserio
15 //            C. Terrevoli
16 //            annalisa.mastroserio@cern.ch
17 //            cristina.terrevoli@ba.infn.it
18 //
19 //========================================================================
20
21 //
22 //ITS class for new geometry based on TGeo
23 //
24
25 #include "AliITS.h"             //base class 
26 #include "AliITSsegmentationUpgrade.h"
27 #include "AliITSupgradeDigitizer.h"
28 #include <TArrayS.h>
29
30 class TGeoVolume;
31 class TGeoVolumeAssembly;
32 class TArrayD;
33 class TClonesArray;
34 class TObjArray;
35 class AiITShit;
36 class AliITSupgrade : public AliITS //TObject-TNamed-AliModule-AliDetector-AliITS-AliITSupgrade
37 {
38  public:
39   AliITSupgrade();                                                    //default ctor
40   AliITSupgrade(const char *name, const char *title, TArrayD widths, TArrayD radii,TArrayD halfLengths, TArrayD radiiCu, TArrayD widthsCu, TArrayS copper,Bool_t bp, Double_t radiusBP, Double_t widthPB, Double_t halfLengthsBP);  //ctor
41   virtual       ~AliITSupgrade();                                       //dtor
42   
43   //framework part+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
44   void    AddAlignableVolumes() const;             //from AliModule invoked from AliMC           
45   void    CreateMaterials  ();                     //from AliModule invoked from AliMC
46   void    CreateGeometry   ();                     //from AliModule invoked from AliMC                     
47   void    Init             ();                     //from AliModule invoked from AliMC::InitGeometry()
48   void    StepManager      ();                     //from AliModule invoked from AliMC::Stepping()
49   void    Hits2SDigits();
50   void    MakeBranch      (Option_t *opt="");        //from AliModule invokde from AliRun::Tree2Tree() to make requested ITSupgrade branch
51   void    SetTreeAddress  (                );        //from AliModule invoked from AliRun::GetEvent(), AliLoader::SetTAddrInDet()
52           
53   //create containers++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
54   void     HitCreate()             {if(fHits)return; fHits=new TClonesArray("AliITShit"); fNhits=0;     }//create hits list 
55
56   TObjArray*      SDigitsList()            const{return fSdigits;}//get digits list for all layers
57   TClonesArray*   SDigitsList(Int_t layer) const{return fSdigits ? (TClonesArray *)fSdigits->At(layer):0;}//get sdigits list for a layer
58   void            SDigitsCreate()            {if (fSdigits) return; 
59     fSdigits=new  TObjArray(fNlayers);
60     for(Int_t i=0;i<fNlayers;i++)fSdigits->AddAt(new TClonesArray("AliITSDigitUpgrade"),i);}//create digits list
61   void           SDigitsReset ()              {if(fSdigits) for(int i=0;i<fNlayers;i++)fSdigits->At(i)->Clear();                     }//clean sdigits list  
62      
63      
64      
65   TObjArray*      DigitsList()            const{return fDigits;}//get digits list for all layers
66   TClonesArray*   DigitsList(Int_t layer) const{return fDigits ? (TClonesArray *)fDigits->At(layer):0;}//get digits list for chamber
67   void            DigitsCreate()            {if (fDigits) return; 
68     fDigits=new TObjArray(fNlayers);
69     for(Int_t i=0;i<fNlayers;i++)fDigits->AddAt(new TClonesArray("AliITSDigitUpgrade"),i);}//create digits list
70   void          DigitsReset ()              {if(fDigits)for(int i=0;i<fNlayers;i++)fDigits->At(i)->Clear();                     }//clean digits list
71
72   TObjArray*    ClusterList()           const{return fClusters;}//get clusters list for all layers
73   TClonesArray* ClusterList(Int_t layer)const{return fClusters ? (TClonesArray *)fClusters->At(layer):0;}//get clusters list for chamber
74   void          ClustersCreate()             {if (fClusters) return; //PH do not recreate existing containers
75     fClusters=new TObjArray(fNlayers); 
76     for(Int_t i=0;i<fNlayers;i++)fClusters->AddAt(new TClonesArray("TObject"),i);}//create clusters list
77   void   ClusterReset ()             {if(fClusters)for(int i=0;i<fNlayers;i++)fClusters->At(i)->Clear();                     }//clean clusters list
78
79   AliDigitizer*   CreateDigitizer  (AliRunDigitizer *m) const {return new AliITSupgradeDigitizer(m);}  //from AliModule invoked from AliSimulation::RunDigitization()
80            
81   void Hit2SumDig(TClonesArray *hits,TObjArray *pSDig, Int_t *nSdigit);
82
83   enum EMedia {kAir=0,kSi=1,kBe=2, kCu=3};                         //media ids used in CreateMaterials  
84     
85
86   // Geometry/segmentation creation part
87   TGeoVolumeAssembly * CreateVol();
88   void SetFullSegmentation(TArrayD xsize, TArrayD zsize);
89
90
91   void StepHistory();
92
93  protected:
94   TArrayD fWidths;
95   TArrayD fRadii;
96   TArrayD fRadiiCu;
97   TArrayD fWidthsCu;
98   TArrayS fCopper;
99   Bool_t fBeampipe;
100   Double_t fRadiusBP;
101   Double_t fWidthBP;
102   Double_t fHalfLengthBP;
103   Int_t   fNlayers;
104   TArrayD fHalfLength;
105   TObjArray            *fSdigits;                 //![fNlayers] list of sdigits
106   TObjArray            *fDigits;                     //![fNlayers] list of digits per layer
107   TObjArray            *fClusters;                     //![fNlayers] list of clusters per layer
108   AliITSsegmentationUpgrade *fSegmentation;
109   
110  private:
111   AliITSupgrade(const AliITSupgrade& u);              //dummy copy constructor
112   AliITSupgrade &operator=(const AliITSupgrade& u);   //dummy assignment operator
113
114   ClassDef(AliITSupgrade,2)                                                                //ITS Upgrade full version for simulation
115   
116     };
117
118 #endif
119