1 #ifndef ALIITSUPGRADE_H
2 #define ALIITSUPGRADE_H
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5 * See cxx source for full Copyright notice */
9 //========================================================================
11 // Geometry of the Inner Tracking System Upgrade based on TGeo
14 // Authors: A. Mastroserio
16 // annalisa.mastroserio@cern.ch
17 // cristina.terrevoli@ba.infn.it
19 //========================================================================
22 //ITS class for new geometry based on TGeo
25 #include "AliITS.h" //base class
26 #include "AliITSsegmentationUpgrade.h"
27 #include "AliITSupgradeDigitizer.h"
31 class TGeoVolumeAssembly;
36 class AliITSupgrade : public AliITS //TObject-TNamed-AliModule-AliDetector-AliITS-AliITSupgrade
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
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()
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()
53 //create containers++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
54 void HitCreate() {if(fHits)return; fHits=new TClonesArray("AliITShit"); fNhits=0; }//create hits list
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
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
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
79 AliDigitizer* CreateDigitizer (AliRunDigitizer *m) const {return new AliITSupgradeDigitizer(m);} //from AliModule invoked from AliSimulation::RunDigitization()
81 void Hit2SumDig(TClonesArray *hits,TObjArray *pSDig, Int_t *nSdigit);
83 enum EMedia {kAir=0,kSi=1,kBe=2, kCu=3}; //media ids used in CreateMaterials
86 // Geometry/segmentation creation part
87 TGeoVolumeAssembly * CreateVol();
88 void SetFullSegmentation(TArrayD xsize, TArrayD zsize);
102 Double_t fHalfLengthBP;
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;
111 AliITSupgrade(const AliITSupgrade& u); //dummy copy constructor
112 AliITSupgrade &operator=(const AliITSupgrade& u); //dummy assignment operator
114 ClassDef(AliITSupgrade,2) //ITS Upgrade full version for simulation