1 #ifndef ALIITSDETTYPESIM_H
2 #define ALIITSDETTYPESIM_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
10 /**********************************************************************
11 * This class contains all of the "external" information needed to do *
12 * detector specific simulations for the ITS. *
13 **********************************************************************/
15 #include <TObjArray.h>
16 #include <TClonesArray.h>
18 #include "AliITSgeom.h"
20 class AliITSsimulation;
21 class AliITSsegmentation;
24 class AliITSDetTypeSim : public TObject {
26 AliITSDetTypeSim(); // Default constructor
27 virtual ~AliITSDetTypeSim(); // Proper Destructor
28 virtual AliITSDetTypeSim(const AliITSDetTypeSim &source);
30 // AliITSgeom related functions
31 // Return the pointer to the AliITSgeom object for simulation
32 AliITSgeom *GetITSgeom() const{return fGeom;}
33 // Set the pointer to the AliITSgeom object for simulation
34 void SetITSgeom(AliITSgeom *geom){fGeom=geom;}
36 // AliITSmodule related functions
37 // Return Pointer to array of hits by module number
38 TObjArray *GetModules(){return fHitModule;}
39 // Return Pointer to hits for a specific module number
40 AliITSmodule *GetModule(Int_t index){
41 return (AliITSmodule*)(fHitModule->At(index));}
43 // AliITSsimulation related functions
44 // Set the simulation model for a give type of detector
45 virtual void SetSimulationModel(Int_t dettype,AliITSsimulation *sim){
46 if(fSimulation==0) fSimulation = new TObjArray();
47 if(fSimulation->At(dettype)!=0) delete fSimulation->At(dettype);
48 fSimulation->AddAt(sim,dettype);}
49 // Return the simulation model for a give detector type
50 virtual AliITSsimulation* GetSimulationModel(Int_t dettype){
51 if(fSimulation==0) return 0; return fSimulation->At(dettype);}
52 // Return the simulation model for a given module (checks AliITSgeom)
53 virtual AliITSsimulation* GetSimulationModelByModule(Int_t module){
54 if(fGeom==0) return 0;
55 return GetSimulationModel(fGeom->GetModuleType(module));}
57 // AliITSsegmentation related functions
58 // Set the segmentation model for a give type of detector
59 virtual void SetSegmentationModel(Int_t dettype,AliITSsegmentation *seg){
60 if(fSegmentation==0) fSegmentation = new TObjArray();
61 if(fSegmentation->At(dettype)!=0) delete fSegmentation->At(dettype);
62 fSegmentation->AddAt(seg,dettype);}
63 // Return the segmentation model for a give detector type
64 virtual AliITSsegmentation* GetSegmentationModel(Int_t dettype){
65 if(fSegmentation==0) return 0; return fSegmentation->At(dettype);}
66 // Return the segmentation model for a given module (checks AliITSgeom)
67 virtual AliITSsegmentation* GetSegmentationModelByModule(Int_t module){
68 if(fGeom==0) return 0;
69 return GetSegmentationModel(fGeom->GetModuleType(module));}
71 // AliITSresponse related functions
72 // Set the response model for a give module
73 virtual void SetResponseModel(Int_t module,AliITSresponse *resp){
74 if(fResponse==0) fResponse = new TObjArray();
75 if(fResponse->At(module)!=0) delete fResponse->At(module);
76 fResponse->AddAt(resp,module);}
77 // Return the response model for a give detector type
78 virtual AliITSresponse* GetResponseModel(Int_t module){
79 if(fResponse==0) return 0; return fResponse->At(module);}
82 virtual void InitModules(Int_t size,Int_t &nmodules);
83 virtual void FillModules(TTree *treeH, Int_t mask = 0);
84 virtual void ClearModules(){if(fHitModule) fHitModule->Delete();};
86 // TClonesArray of Hits related functions
87 virtual void ResetHits(){fNhits=0;if(fHits!=0) fHits->Clear();}
89 // TClonesArray of SDigits related functions
90 virtual void ResetSDigits(){fNSDigits=0;if(fSDigits!=0) fSDigits->Clear();}
92 // TClonesArray of SDigits related functions
93 virtual void ResetDigits(){fNDigits=0;if(fDigits!=0) fDigits->Clear();}
97 TObjArray *fSimulation; // [NDet]
98 TObjArray *fSegmentation; // [NDet]
99 TObjArray *fResponse; // [NMod]
100 TObjArray *fPreProcess; // [] e.g. Fill fHitModule with hits
101 TObjArray *fPostProcess; // [] e.g. Wright Raw data
102 TObjArray *fHitModule; //! [NMod][Nhits]
103 Int_t fNhits; //! number of hits
104 TClonesArray *fHits; //! Local pointer to hits
105 Int_t fNSDigits; //! number of SDigits
106 TClonesArray *fSDigits; //! [NMod][NSDigits]
107 Int_t fNDigits; //! number of Digits
108 TClonesArray *fDigits; //! [NMod][NDigits]
109 TString fHitClassName; // String with Hit class name
110 TString fSDigClassName;// String with SDigit class name.
111 TString fDigClassName; // String with digit class name.
113 ClassDef(AliITSDetTypeSim,1) // ITS Simulation structure