]> git.uio.no Git - u/mrichter/AliRoot.git/blame - ITS/AliITSv11.cxx
Removed some coding violations.
[u/mrichter/AliRoot.git] / ITS / AliITSv11.cxx
CommitLineData
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 86ClassImp(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//______________________________________________________________________
95AliITSv11::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 109AliITSv11::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 123AliITSv11::~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 137AliITSv11::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//______________________________________________________________________
151AliITSv11& 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 165void 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 183void 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);
286dfe89 194 const Double_t kcm = 1.0;
162acd47 195
541f7ba6 196 TGeoManager *mgr = gGeoManager;
197 TGeoVolume *ALIC = mgr->GetTopVolume();
198
fed42993 199 TGeoPcon *itsv = new TGeoPcon("ITS Top Volume, Daughter of ALIC",
200 0.0,360.0,2);
541f7ba6 201 // DefineSection(section number, Z, Rmin, Rmax).
d1a22f9a 202 itsv->DefineSection(0,-300.0*kcm,0.01*kcm,50.0*kcm);
203 itsv->DefineSection(1,+300.0*kcm,0.01*kcm,50.0*kcm);
541f7ba6 204 TGeoVolume *ITSV = new TGeoVolume("ITSV",itsv,0);
cbd7b929 205 //mgr->AddVolume(ITSV);
206 ITSV->SetVisibility(kFALSE);
541f7ba6 207 ALIC->AddNode(ITSV,1,0);
162acd47 208 //
172b0d90 209 AliITSv11GeometrySupport *sup = new AliITSv11GeometrySupport(GetDebug());
210 //sup->SPDCone(ITSV);
211 //sup->SDDCone(ITSV);
212 sup->SSDCone(ITSV);
213 //sup->ServicesCableSupport(ITSV);
541f7ba6 214}
215//______________________________________________________________________
216void AliITSv11::CreateMaterials(){
217 // Create ITS materials
218 // This function defines the default materials used in the Geant
219 // Monte Carlo simulations for the geometries AliITSv11.
220 // In general it is automatically replaced by
221 // Inputs:
222 // none.
223 // Outputs:
224 // none.
225 // Return
226 // none.
aa9bc63b 227
541f7ba6 228 //TGeoMaterial *C = new TGeoMaterial("ITSCarbon",12.0,6.0,2.265);
229 TGeoMaterial *Al = new TGeoMaterial("ITSAluminum",26.981539,13.0,2.07);
230 TGeoMixture *Cfiber = new TGeoMixture("ITSCarbonFiber",6,1.930);
231 TGeoMixture *Rohacell = new TGeoMixture("ITSRohacell",6,1.930);
232 TGeoMixture *Staselite = new TGeoMixture("ITSStaselite4411w",6,1.930);
233 TGeoMixture *Air = new TGeoMixture("ITSAir",6,1.205*1.E-3);
234 TGeoMixture *Stainless = new TGeoMixture("ITSStainless",6,1.930);
235 //
afac0af7 236 Double_t SPDcone[20];
237 SPDcone[0] = 1.0; // imat
238 SPDcone[1] = 0.0; // isvol
239 SPDcone[2] = gAlice->Field()->Integ(); // ifield
240 SPDcone[3] = gAlice->Field()->Max(); // fieldm
241 SPDcone[4] = 1.0; // tmaxfd [degrees]
242 SPDcone[5] = 1.0; // stemax [cm]
243 SPDcone[6] = 0.5; // deemax [fraction]
244 SPDcone[7] = 1.0E-3; // epsil [cm]
245 SPDcone[8] = 0.0; // stmin [cm]
246 new TGeoMedium("ITSspdCarbonFiber",1,Cfiber,SPDcone);
247 SPDcone[0] += 1.0;
248 new TGeoMedium("ITSspdStaselite4411w",2,Staselite,SPDcone);
249 SPDcone[0] += 1.0;
250 new TGeoMedium("ITSspdRohacell50A",3,Rohacell,SPDcone);
251 SPDcone[0] += 1.0;
252 new TGeoMedium("ITSspdStainlesSteal",4,Stainless,SPDcone);
253 SPDcone[0] += 1.0;
254 new TGeoMedium("ITSspdAir",5,Air,SPDcone);
255 SPDcone[0] += 1.0;
256 new TGeoMedium("ITSspdAl",6,Al,SPDcone);
257 //
541f7ba6 258 Double_t SSDcone[20];
259 SSDcone[0] = 1.0; // imat
260 SSDcone[1] = 0.0; // isvol
261 SSDcone[2] = gAlice->Field()->Integ(); // ifield
262 SSDcone[3] = gAlice->Field()->Max(); // fieldm
263 SSDcone[4] = 1.0; // tmaxfd [degrees]
264 SSDcone[5] = 1.0; // stemax [cm]
265 SSDcone[6] = 0.5; // deemax [fraction]
266 SSDcone[7] = 1.0E-3; // epsil [cm]
267 SSDcone[8] = 0.0; // stmin [cm]
268 new TGeoMedium("ITSssdCarbonFiber",1,Cfiber,SSDcone);
269 SSDcone[0] += 1.0;
270 new TGeoMedium("ITSssdStaselite4411w",2,Staselite,SSDcone);
271 SSDcone[0] += 1.0;
272 new TGeoMedium("ITSssdRohacell50A",3,Rohacell,SSDcone);
273 SSDcone[0] += 1.0;
274 new TGeoMedium("ITSssdStainlesSteal",4,Stainless,SSDcone);
275 SSDcone[0] += 1.0;
276 new TGeoMedium("ITSssdAir",5,Air,SSDcone);
277 SSDcone[0] += 1.0;
278 new TGeoMedium("ITSssdAl",6,Al,SSDcone);
dfefbaec 279}
280//______________________________________________________________________
281void AliITSv11::InitAliITSgeom(){
aa9bc63b 282 // Based on the geometry tree defined in Geant 3.21, this
162acd47 283 // routine initilizes the Class AliITSgeom from the Geant 3.21 ITS
284 // geometry sturture.
aa9bc63b 285 // Inputs:
286 // none.
287 // Outputs:
288 // none.
289 // Return
290 // none.
dfefbaec 291}
dfefbaec 292//______________________________________________________________________
293void AliITSv11::Init(){
aa9bc63b 294 // Initialise the ITS after it has been created.
295 // Inputs:
296 // none.
297 // Outputs:
298 // none.
299 // Return
300 // none.
dfefbaec 301}
302//______________________________________________________________________
303void AliITSv11::SetDefaults(){
162acd47 304 // Sets the default segmentation, response, digit and raw cluster
305 // classes to be used. These defaults can be overwritten in the
306 // macros that do these later steps. Defaults are give hear for the
307 // general user.
aa9bc63b 308 // Inputs:
309 // none.
310 // Outputs:
311 // none.
312 // Return
313 // none.
dfefbaec 314}
315//______________________________________________________________________
316void AliITSv11::DrawModule(){
162acd47 317 // Draw a standard set of shaded view of the ITS version 11.
aa9bc63b 318 // Inputs:
319 // none.
320 // Outputs:
321 // none.
322 // Return
323 // none.
dfefbaec 324}
325//______________________________________________________________________
326void AliITSv11::StepManager(){
aa9bc63b 327 // Called for every step in the ITS, then calles the AliITShit class
dfefbaec 328 // creator with the information to be recoreded about that hit.
aa9bc63b 329 // The value of the macro ALIITSPRINTGEOM if set to 1 will allow the
dfefbaec 330 // printing of information to a file which can be used to create a .det
331 // file read in by the routine CreateGeometry(). If set to 0 or any other
332 // value except 1, the default behavior, then no such file is created nor
162acd47 333 // is the extra variables and the like used in the printing allocated.
2b680d9b 334}
dfefbaec 335