Decoupled ITS/UPGRADE cmake stuff from ITS
[u/mrichter/AliRoot.git] / ITS / UPGRADE / AliITSDetTypeSimUpg.h
1 #ifndef ALIITSDETTYPESIMUPG_H
2 #define ALIITSDETTYPESIMUPG_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 /*
7   $Id: AliITSDetTypeSimUpg.h 53025 2011-11-19 22:50:51Z masera $ 
8 */
9
10 /////////////////////////////////////////////////////////////////////////
11 // * This class contains all of the "external" information needed to do//
12 // * detector specific simulations for the ITS.                        //
13 /////////////////////////////////////////////////////////////////////////
14
15 #include <TObject.h>
16 #include "AliITSLoader.h"
17 #include "AliITSSimuParam.h"
18
19 class TObjArray;
20 class TClonesArray;
21 class TTree;
22 class AliCDBMetaData;
23 class AliITSdigit;
24 class AliITSdigitPixUpg;
25 class AliITSmodule;
26 class AliITSpListItem;
27 class AliITSsimulation;
28 class AliITSsegmentation;
29 class AliITSresponse;
30 class AliITSCalibration;
31 class AliITSgeom;
32 class AliITSTriggerConditions;
33
34 class AliITSDetTypeSimUpg : public TObject {
35  public:
36   //
37   enum {kDetPixUpg, kNDetTypes};
38   //  
39   AliITSDetTypeSimUpg();
40   virtual ~AliITSDetTypeSimUpg(); 
41   AliITSgeom *GetITSgeom() const {if(fLoader)return ((AliITSLoader*)fLoader)->GetITSgeom(); else return 0;}
42   void SetITSgeom(AliITSgeom *geom);
43   
44   virtual void SetSimulationModel(Int_t dettype,AliITSsimulation *sim);
45   virtual AliITSsimulation* GetSimulationModel(Int_t dettype) const;        
46   virtual AliITSsimulation* GetSimulationModelByModule(Int_t module) const;
47   
48   virtual void SetSegmentationModel(Int_t dettype,AliITSsegmentation *seg);
49   virtual AliITSsegmentation* GetSegmentationModel(Int_t dettype) const;
50   virtual AliITSsegmentation* GetSegmentationModelByModule(Int_t module) const;
51   
52   virtual void SetCalibrationModel(Int_t iMod,AliITSCalibration *resp);
53   
54   virtual AliITSCalibration* GetCalibrationModel(Int_t iMod) const;
55   virtual AliITSTriggerConditions* GetTriggerConditions();
56   
57   virtual void SetSimuParam(const AliITSSimuParam* spar){
58     if(fSimuPar) delete fSimuPar;
59     fSimuPar = new AliITSSimuParam(*spar);
60   }
61   virtual AliITSSimuParam* GetSimuParam() const {return fSimuPar;}
62   
63   TObjArray* GetCalibrationArray() const {return fCalibration;}
64   TObjArray* GetSegmentation() const {return fSegmentation;}
65   void ResetCalibrationArray();
66   void ResetSegmentation();
67   
68   virtual void SetLoader(AliITSLoader* loader);
69   AliITSLoader* GetLoader() const {return fLoader;}
70   
71   virtual void SetDefaults();
72   virtual void SetDefaultSimulation();
73   virtual void SetRunNumber(Int_t rn=0){fRunNumber = rn;}
74   virtual Int_t GetRunNumber() const {return fRunNumber;}
75   virtual void SetTreeAddressS(TTree* treeS, const Char_t* name);
76   virtual void SetTreeAddressD(TTree* treeD, const Char_t* name);
77   
78   virtual void SetDigits(TObjArray* digits) {fDigits=digits;}
79   const TClonesArray* GetSDigits() const { return &fSDigits;}
80   TObjArray*    GetDigits() const {return fDigits;}
81   Int_t* GetNDigitArray() const {return fNDigits;}
82   TClonesArray *DigitsAddress(Int_t id) const { return ((TClonesArray*)(*fDigits)[id]);}
83   virtual void ResetSDigits(){fNSDigits=0; fSDigits.Clear();}
84   virtual void ResetDigits();
85   virtual void ResetDigits(Int_t branch);
86   virtual void SDigitsToDigits(Option_t *opt, Char_t* name);
87
88   virtual void AddSumDigit(AliITSpListItem &sdig);
89   virtual void AddSimDigit(Int_t branch, const AliITSdigit *d);
90   virtual void AddSimDigit(Int_t branch,Float_t phys,Int_t* digits,
91                            Int_t* tracks,Int_t *hits,Float_t* trkcharges,
92                            Int_t sigexpanded=-1000);
93   virtual void SetDigitClassName(Int_t i, const Char_t* name) {fkDigClassName[i]=name;}
94   const Char_t* GetDigitClassName(Int_t i) const {return fkDigClassName[i];}
95
96
97
98  protected:
99   virtual void CreateCalibrationArray(); 
100   virtual Bool_t GetCalibration();
101     
102  private:
103   AliITSDetTypeSimUpg(const AliITSDetTypeSimUpg &source);
104   AliITSDetTypeSimUpg& operator=(const AliITSDetTypeSimUpg &source);
105   void SetDefaultSegmentation(Int_t idet);  // creates def segm.
106
107   //
108   Int_t              fDetNModules[kNDetTypes]; // Total numbers of modules of each type, RS
109   //
110   TObjArray    *fSimulation;   //! [NDet]
111   TObjArray    *fSegmentation; //! [NDet]
112   TObjArray    *fCalibration;  //! [NMod]
113   Int_t         fNSDigits;     //! number of SDigits
114   TClonesArray  fSDigits;      //! Summable digits
115   Int_t*        fNDigits;      //! [NDet] number of Digits for det.
116   Int_t         fRunNumber;    //! run number (to access DB)
117   TObjArray     *fDigits;      //! [NMod][NDigits]
118   AliITSSimuParam *fSimuPar;   //! detector simulation parameters
119   const Char_t*    fkDigClassName[kNDetTypes]; //! String with digit class name.
120   AliITSLoader* fLoader;          //! loader  
121   Bool_t        fFirstcall;       //! flag
122   AliITSTriggerConditions* fTriggerConditions; //! Trigger conditions 
123   //
124   static const char* fgkDetTypeName[kNDetTypes];  // detector type names
125   //       
126   ClassDef(AliITSDetTypeSimUpg,1) // ITS Upg Simulation structure
127  
128 };
129
130 #endif