]>
Commit | Line | Data |
---|---|---|
2b680d9b | 1 | /************************************************************************** |
2 | * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * | |
3 | * * | |
4 | * Author: The ALICE Off-line Project. * | |
5 | * Contributors are mentioned in the code where appropriate. * | |
6 | * * | |
7 | * Permission to use, copy, modify and distribute this software and its * | |
8 | * documentation strictly for non-commercial purposes is hereby granted * | |
9 | * without fee, provided that the above copyright notice appears in all * | |
10 | * copies and that both the copyright notice and this permission notice * | |
11 | * appear in the supporting documentation. The authors make no claims * | |
12 | * about the suitability of this software for any purpose. It is * | |
13 | * provided "as is" without express or implied warranty. * | |
14 | **************************************************************************/ | |
15 | ||
803d1ab0 | 16 | /* $Id$ */ |
2b680d9b | 17 | |
18 | ////////////////////////////////////////////////////////////////////////////// | |
19 | // // | |
20 | // Inner Traking System version 11 // | |
21 | // This class contains the base procedures for the Inner Tracking System // | |
22 | // // | |
23 | // Authors: R. Barbera // | |
24 | // version 6. // | |
25 | // Created 2000. // | |
26 | // // | |
27 | // NOTE: THIS IS THE SYMMETRIC PPR geometry of the ITS. // | |
28 | // THIS WILL NOT WORK // | |
29 | // with the geometry or module classes or any analysis classes. You are // | |
30 | // strongly encouraged to uses AliITSv5. // | |
31 | // // | |
32 | ////////////////////////////////////////////////////////////////////////////// | |
33 | // See AliITSv11::StepManager(). | |
541f7ba6 | 34 | // General C/C++ includes |
2b680d9b | 35 | #include <stdio.h> |
36 | #include <stdlib.h> | |
541f7ba6 | 37 | // General Root includes |
38 | #include <Riostream.h> | |
2b680d9b | 39 | #include <TMath.h> |
172b0d90 | 40 | #include <float.h> |
2b680d9b | 41 | #include <TFile.h> // only required for Tracking function? |
2b680d9b | 42 | #include <TObjArray.h> |
541f7ba6 | 43 | #include <TClonesArray.h> |
2b680d9b | 44 | #include <TLorentzVector.h> |
45 | #include <TObjString.h> | |
541f7ba6 | 46 | // Root Geometry includes |
47 | #include <TGeoManager.h> | |
afac0af7 | 48 | #include <TGeoVolume.h> |
541f7ba6 | 49 | #include <TGeoPcon.h> |
d1a22f9a | 50 | #include <TGeoCone.h> |
afac0af7 | 51 | #include <TGeoTube.h> // contaings TGeoTubeSeg |
52 | #include <TGeoArb8.h> | |
53 | #include <TGeoCompositeShape.h> | |
54 | #include <TGeoMatrix.h> | |
541f7ba6 | 55 | #include <TGeoNode.h> |
56 | #include <TGeoMaterial.h> | |
afac0af7 | 57 | #include <TGeoMedium.h> |
172b0d90 | 58 | #include "AliITSv11GeometrySupport.h" |
541f7ba6 | 59 | // General AliRoot includes |
2b680d9b | 60 | #include "AliRun.h" |
61 | #include "AliMagF.h" | |
62 | #include "AliConst.h" | |
541f7ba6 | 63 | // ITS specific includes |
2b680d9b | 64 | #include "AliITShit.h" |
2b680d9b | 65 | #include "AliITSgeom.h" |
66 | #include "AliITSgeomSPD.h" | |
67 | #include "AliITSgeomSDD.h" | |
68 | #include "AliITSgeomSSD.h" | |
69 | #include "AliITSDetType.h" | |
70 | #include "AliITSresponseSPD.h" | |
71 | #include "AliITSresponseSDD.h" | |
72 | #include "AliITSresponseSSD.h" | |
73 | #include "AliITSsegmentationSPD.h" | |
74 | #include "AliITSsegmentationSDD.h" | |
75 | #include "AliITSsegmentationSSD.h" | |
76 | #include "AliITSsimulationSPD.h" | |
77 | #include "AliITSsimulationSDD.h" | |
78 | #include "AliITSsimulationSSD.h" | |
79 | #include "AliITSClusterFinderSPD.h" | |
80 | #include "AliITSClusterFinderSDD.h" | |
81 | #include "AliITSClusterFinderSSD.h" | |
541f7ba6 | 82 | #include "AliITSBaseGeometry.h" |
83 | #include "AliITSv11.h" | |
172b0d90 | 84 | #include "AliITSv11GeometrySupport.h" |
171f3f35 | 85 | |
2b680d9b | 86 | ClassImp(AliITSv11) |
87 | ||
541f7ba6 | 88 | /* |
89 | Some temparary #define's used untill ROOT has addoppted the proper | |
90 | Getter in it's classes. | |
91 | These Below are for TGeoPcon functions. | |
92 | */ | |
93 | ||
2b680d9b | 94 | //______________________________________________________________________ |
95 | AliITSv11::AliITSv11() : AliITS() { | |
aa9bc63b | 96 | // Standard default constructor for the ITS version 11. |
2b680d9b | 97 | // Inputs: |
aa9bc63b | 98 | // none. |
2b680d9b | 99 | // Outputs: |
aa9bc63b | 100 | // none. |
101 | // Return | |
102 | // A default constructed AliITSv11 class. | |
2b680d9b | 103 | |
541f7ba6 | 104 | //fITSV = 0; |
105 | //fcS = 0; | |
162acd47 | 106 | // fcD = 0; |
2b680d9b | 107 | } |
108 | //______________________________________________________________________ | |
aa9bc63b | 109 | AliITSv11::AliITSv11(const char *title) : AliITS("ITS", title){ |
110 | // Standard constructor for the ITS version 11. | |
2b680d9b | 111 | // Inputs: |
162acd47 | 112 | // const char *title The title of for this geometry. |
2b680d9b | 113 | // Outputs: |
aa9bc63b | 114 | // none. |
115 | // Return | |
116 | // A Standard constructed AliITSv11 class. | |
2b680d9b | 117 | |
541f7ba6 | 118 | //fITSV = 0; |
119 | //fcS = 0; | |
162acd47 | 120 | // fcD = 0; |
2b680d9b | 121 | } |
122 | //______________________________________________________________________ | |
aa9bc63b | 123 | AliITSv11::~AliITSv11() { |
124 | // Standard destructor for the ITS version 11. | |
dfefbaec | 125 | // Inputs: |
aa9bc63b | 126 | // none. |
dfefbaec | 127 | // Outputs: |
aa9bc63b | 128 | // none. |
129 | // Return | |
130 | // none. | |
dfefbaec | 131 | |
541f7ba6 | 132 | // if(fITSV!=0) delete fITSV; |
133 | // if(fcS!=0) delete fcS; | |
162acd47 | 134 | // if(fcD!=0) delete fcD; |
135 | } | |
136 | //______________________________________________________________________ | |
541f7ba6 | 137 | AliITSv11::AliITSv11(const AliITSv11 &source) : AliITS(source){ |
162acd47 | 138 | // Copy Constructor for ITS version 11. |
139 | // Inputs: | |
140 | // AliITSv11 &source class to be copied from. | |
141 | // Outputs: | |
142 | // none. | |
143 | // Return | |
144 | // none. | |
145 | ||
146 | if(&source == this) return; | |
147 | Error("Copy Constructor","Not allowed to copy AliITSv11"); | |
148 | return; | |
149 | } | |
150 | //______________________________________________________________________ | |
151 | AliITSv11& AliITSv11::operator=(const AliITSv11 &source){ | |
152 | // Assignment operator for the ITS version 11. | |
153 | // Inputs: | |
154 | // AliITSv11 &source class to be copied from. | |
155 | // Outputs: | |
156 | // none. | |
157 | // Return | |
158 | // none. | |
159 | ||
160 | if(&source == this) return *this; | |
161 | Error("= operator","Not allowed to copy AliITSv11"); | |
162 | return *this; | |
dfefbaec | 163 | } |
164 | //______________________________________________________________________ | |
aa9bc63b | 165 | void AliITSv11::BuildGeometry(){ |
162acd47 | 166 | // This routine defines and Creates the geometry for version 11 of |
167 | // the ITS for use in the simulation display routines. This is a | |
168 | // very simplified geometry for speed of viewing. | |
2b680d9b | 169 | // Inputs: |
aa9bc63b | 170 | // none. |
2b680d9b | 171 | // Outputs: |
aa9bc63b | 172 | // none. |
173 | // Return | |
174 | // none. | |
162acd47 | 175 | TVector3 t(0.0,0.0,0.0); |
2b680d9b | 176 | |
541f7ba6 | 177 | //if(fITSV==0) fITSV = new AliITSGeometryITSV(this,"ALIC"); |
178 | //if(fcS==0) fcS = new AliITSGeometrySSDCone(this,t,"TSV",1); | |
2b680d9b | 179 | |
541f7ba6 | 180 | //fcS->BuildDisplayGeometry(); |
2b680d9b | 181 | } |
182 | //______________________________________________________________________ | |
aa9bc63b | 183 | void AliITSv11::CreateGeometry(){ |
162acd47 | 184 | // This routine defines and Creates the geometry for version 11 of |
185 | // the ITS. The geometry is used by the particle trasport routines, | |
186 | // and therefore, is very detailed. | |
dfefbaec | 187 | // Inputs: |
aa9bc63b | 188 | // none. |
dfefbaec | 189 | // Outputs: |
aa9bc63b | 190 | // none. |
191 | // Return | |
192 | // none. | |
aa9bc63b | 193 | TVector3 t(0.0,0.0,0.0); |
162acd47 | 194 | |
541f7ba6 | 195 | TGeoManager *mgr = gGeoManager; |
196 | TGeoVolume *ALIC = mgr->GetTopVolume(); | |
197 | ||
fed42993 | 198 | TGeoPcon *itsv = new TGeoPcon("ITS Top Volume, Daughter of ALIC", |
199 | 0.0,360.0,2); | |
541f7ba6 | 200 | // DefineSection(section number, Z, Rmin, Rmax). |
d1a22f9a | 201 | itsv->DefineSection(0,-300.0*kcm,0.01*kcm,50.0*kcm); |
202 | itsv->DefineSection(1,+300.0*kcm,0.01*kcm,50.0*kcm); | |
541f7ba6 | 203 | TGeoVolume *ITSV = new TGeoVolume("ITSV",itsv,0); |
cbd7b929 | 204 | //mgr->AddVolume(ITSV); |
205 | ITSV->SetVisibility(kFALSE); | |
541f7ba6 | 206 | ALIC->AddNode(ITSV,1,0); |
162acd47 | 207 | // |
172b0d90 | 208 | AliITSv11GeometrySupport *sup = new AliITSv11GeometrySupport(GetDebug()); |
209 | //sup->SPDCone(ITSV); | |
210 | //sup->SDDCone(ITSV); | |
211 | sup->SSDCone(ITSV); | |
212 | //sup->ServicesCableSupport(ITSV); | |
541f7ba6 | 213 | } |
214 | //______________________________________________________________________ | |
215 | void AliITSv11::CreateMaterials(){ | |
216 | // Create ITS materials | |
217 | // This function defines the default materials used in the Geant | |
218 | // Monte Carlo simulations for the geometries AliITSv11. | |
219 | // In general it is automatically replaced by | |
220 | // Inputs: | |
221 | // none. | |
222 | // Outputs: | |
223 | // none. | |
224 | // Return | |
225 | // none. | |
aa9bc63b | 226 | |
541f7ba6 | 227 | //TGeoMaterial *C = new TGeoMaterial("ITSCarbon",12.0,6.0,2.265); |
228 | TGeoMaterial *Al = new TGeoMaterial("ITSAluminum",26.981539,13.0,2.07); | |
229 | TGeoMixture *Cfiber = new TGeoMixture("ITSCarbonFiber",6,1.930); | |
230 | TGeoMixture *Rohacell = new TGeoMixture("ITSRohacell",6,1.930); | |
231 | TGeoMixture *Staselite = new TGeoMixture("ITSStaselite4411w",6,1.930); | |
232 | TGeoMixture *Air = new TGeoMixture("ITSAir",6,1.205*1.E-3); | |
233 | TGeoMixture *Stainless = new TGeoMixture("ITSStainless",6,1.930); | |
234 | // | |
afac0af7 | 235 | Double_t SPDcone[20]; |
236 | SPDcone[0] = 1.0; // imat | |
237 | SPDcone[1] = 0.0; // isvol | |
238 | SPDcone[2] = gAlice->Field()->Integ(); // ifield | |
239 | SPDcone[3] = gAlice->Field()->Max(); // fieldm | |
240 | SPDcone[4] = 1.0; // tmaxfd [degrees] | |
241 | SPDcone[5] = 1.0; // stemax [cm] | |
242 | SPDcone[6] = 0.5; // deemax [fraction] | |
243 | SPDcone[7] = 1.0E-3; // epsil [cm] | |
244 | SPDcone[8] = 0.0; // stmin [cm] | |
245 | new TGeoMedium("ITSspdCarbonFiber",1,Cfiber,SPDcone); | |
246 | SPDcone[0] += 1.0; | |
247 | new TGeoMedium("ITSspdStaselite4411w",2,Staselite,SPDcone); | |
248 | SPDcone[0] += 1.0; | |
249 | new TGeoMedium("ITSspdRohacell50A",3,Rohacell,SPDcone); | |
250 | SPDcone[0] += 1.0; | |
251 | new TGeoMedium("ITSspdStainlesSteal",4,Stainless,SPDcone); | |
252 | SPDcone[0] += 1.0; | |
253 | new TGeoMedium("ITSspdAir",5,Air,SPDcone); | |
254 | SPDcone[0] += 1.0; | |
255 | new TGeoMedium("ITSspdAl",6,Al,SPDcone); | |
256 | // | |
541f7ba6 | 257 | Double_t SSDcone[20]; |
258 | SSDcone[0] = 1.0; // imat | |
259 | SSDcone[1] = 0.0; // isvol | |
260 | SSDcone[2] = gAlice->Field()->Integ(); // ifield | |
261 | SSDcone[3] = gAlice->Field()->Max(); // fieldm | |
262 | SSDcone[4] = 1.0; // tmaxfd [degrees] | |
263 | SSDcone[5] = 1.0; // stemax [cm] | |
264 | SSDcone[6] = 0.5; // deemax [fraction] | |
265 | SSDcone[7] = 1.0E-3; // epsil [cm] | |
266 | SSDcone[8] = 0.0; // stmin [cm] | |
267 | new TGeoMedium("ITSssdCarbonFiber",1,Cfiber,SSDcone); | |
268 | SSDcone[0] += 1.0; | |
269 | new TGeoMedium("ITSssdStaselite4411w",2,Staselite,SSDcone); | |
270 | SSDcone[0] += 1.0; | |
271 | new TGeoMedium("ITSssdRohacell50A",3,Rohacell,SSDcone); | |
272 | SSDcone[0] += 1.0; | |
273 | new TGeoMedium("ITSssdStainlesSteal",4,Stainless,SSDcone); | |
274 | SSDcone[0] += 1.0; | |
275 | new TGeoMedium("ITSssdAir",5,Air,SSDcone); | |
276 | SSDcone[0] += 1.0; | |
277 | new TGeoMedium("ITSssdAl",6,Al,SSDcone); | |
dfefbaec | 278 | } |
279 | //______________________________________________________________________ | |
280 | void AliITSv11::InitAliITSgeom(){ | |
aa9bc63b | 281 | // Based on the geometry tree defined in Geant 3.21, this |
162acd47 | 282 | // routine initilizes the Class AliITSgeom from the Geant 3.21 ITS |
283 | // geometry sturture. | |
aa9bc63b | 284 | // Inputs: |
285 | // none. | |
286 | // Outputs: | |
287 | // none. | |
288 | // Return | |
289 | // none. | |
dfefbaec | 290 | } |
dfefbaec | 291 | //______________________________________________________________________ |
292 | void AliITSv11::Init(){ | |
aa9bc63b | 293 | // Initialise the ITS after it has been created. |
294 | // Inputs: | |
295 | // none. | |
296 | // Outputs: | |
297 | // none. | |
298 | // Return | |
299 | // none. | |
dfefbaec | 300 | } |
301 | //______________________________________________________________________ | |
302 | void AliITSv11::SetDefaults(){ | |
162acd47 | 303 | // Sets the default segmentation, response, digit and raw cluster |
304 | // classes to be used. These defaults can be overwritten in the | |
305 | // macros that do these later steps. Defaults are give hear for the | |
306 | // general user. | |
aa9bc63b | 307 | // Inputs: |
308 | // none. | |
309 | // Outputs: | |
310 | // none. | |
311 | // Return | |
312 | // none. | |
dfefbaec | 313 | } |
314 | //______________________________________________________________________ | |
315 | void AliITSv11::DrawModule(){ | |
162acd47 | 316 | // Draw a standard set of shaded view of the ITS version 11. |
aa9bc63b | 317 | // Inputs: |
318 | // none. | |
319 | // Outputs: | |
320 | // none. | |
321 | // Return | |
322 | // none. | |
dfefbaec | 323 | } |
324 | //______________________________________________________________________ | |
325 | void AliITSv11::StepManager(){ | |
aa9bc63b | 326 | // Called for every step in the ITS, then calles the AliITShit class |
dfefbaec | 327 | // creator with the information to be recoreded about that hit. |
aa9bc63b | 328 | // The value of the macro ALIITSPRINTGEOM if set to 1 will allow the |
dfefbaec | 329 | // printing of information to a file which can be used to create a .det |
330 | // file read in by the routine CreateGeometry(). If set to 0 or any other | |
331 | // value except 1, the default behavior, then no such file is created nor | |
162acd47 | 332 | // is the extra variables and the like used in the printing allocated. |
2b680d9b | 333 | } |
dfefbaec | 334 |