Added several more functions (memory management mainly).
[u/mrichter/AliRoot.git] / RICH / AliRICHv0.cxx
CommitLineData
4c039060 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
16/*
6e36c0f2 17 $Log$
c4384528 18 Revision 1.19 2001/02/13 20:10:22 jbarbosa
19 Removed call to SetNSec() (obsolete). Fixed bug in chamber initialisation (not all chambers were initialised).
20
2fc6393f 21 Revision 1.18 2000/12/20 14:07:36 jbarbosa
22 Removed dependencies on TGeant3 (thanks to F. Carminati and I. Hrivnacova)
23
5cfcdf54 24 Revision 1.17 2000/12/18 17:44:29 jbarbosa
25 Took two lines out of output.
26
f2de8657 27 Revision 1.16 2000/10/03 21:44:09 morsch
28 Use AliSegmentation and AliHit abstract base classes.
29
a2f7eaf6 30 Revision 1.15 2000/10/02 15:54:55 jbarbosa
31 New default version (15 mm freon).
32
a2db5cde 33 Revision 1.14 2000/07/10 15:28:39 fca
34 Correction of the inheritance scheme
35
452a64c6 36 Revision 1.13 2000/06/30 16:38:15 dibari
37 Test on kDebugevel
38
8fa8fc03 39 Revision 1.12 2000/06/13 13:06:28 jbarbosa
40 Fixed compiling error for HP (multiple declaration)
41
7f36f6bc 42 Revision 1.11 2000/06/12 15:35:44 jbarbosa
43 Cleaned up version.
44
237c933d 45 Revision 1.10 2000/06/09 14:59:25 jbarbosa
46 New default version. No setters needed, no hits.
47
c71fc6da 48 Revision 1.9 2000/05/31 08:19:38 jbarbosa
49 Fixed bug in StepManager
50
27d40190 51 Revision 1.8 2000/05/26 17:30:08 jbarbosa
52 Cerenkov angle now stored within cerenkov data structure.
53
b15cdb56 54 Revision 1.7 2000/05/18 10:31:36 jbarbosa
55 Fixed positioning of spacers inside freon.
56 Fixed positioning of proximity gap
57 inside methane.
58 Fixed cut on neutral particles in the StepManager.
59
6d31e556 60 Revision 1.6 2000/04/28 11:51:58 morsch
61 Dimensions of arrays hits and Ckov_data corrected.
62
8140b37e 63 Revision 1.5 2000/04/19 13:28:46 morsch
64 Major changes in geometry (parametrised), materials (updated) and
65 step manager (diagnostics) (JB, AM)
66
4c039060 67*/
68
6e36c0f2 69
70
c71fc6da 71/////////////////////////////////////////////////////////////
72// Manager and hits classes for set: RICH default version //
73/////////////////////////////////////////////////////////////
ddae0931 74
75#include <TTUBE.h>
76#include <TNode.h>
77#include <TRandom.h>
78
79#include "AliRICHv0.h"
a2f7eaf6 80#include "AliSegmentation.h"
237c933d 81#include "AliRICHResponse.h"
82#include "AliRICHSegmentationV0.h"
83#include "AliRICHResponseV0.h"
84#include "AliRICHGeometry.h"
ddae0931 85#include "AliRun.h"
86#include "AliMC.h"
87#include "iostream.h"
88#include "AliCallf77.h"
89#include "AliConst.h"
6e36c0f2 90#include "AliPDG.h"
ddae0931 91
92ClassImp(AliRICHv0)
93
94//___________________________________________
95AliRICHv0::AliRICHv0() : AliRICH()
96{
237c933d 97
98// Default constructor
99
6e36c0f2 100 //fChambers = 0;
ddae0931 101}
102
103//___________________________________________
104AliRICHv0::AliRICHv0(const char *name, const char *title)
105 : AliRICH(name,title)
106{
c71fc6da 107 //
108// Version 0
237c933d 109// Default Segmentation, no hits
c4384528 110 AliRICHSegmentationV0* segmentation = new AliRICHSegmentationV0;
c71fc6da 111//
112// Segmentation parameters
c4384528 113 segmentation->SetPadSize(0.84,0.80);
114 segmentation->SetDAnod(0.84/2);
c71fc6da 115//
116// Geometry parameters
237c933d 117 AliRICHGeometry* geometry = new AliRICHGeometry;
118 geometry->SetGapThickness(8);
119 geometry->SetProximityGapThickness(.4);
120 geometry->SetQuartzLength(131);
121 geometry->SetQuartzWidth(126.2);
122 geometry->SetQuartzThickness(.5);
123 geometry->SetOuterFreonLength(131);
124 geometry->SetOuterFreonWidth(40.3);
125 geometry->SetInnerFreonLength(131);
126 geometry->SetInnerFreonWidth(40.3);
a2db5cde 127 geometry->SetFreonThickness(1.5);
c71fc6da 128//
129// Response parameters
c4384528 130 AliRICHResponseV0* response = new AliRICHResponseV0;
131 response->SetSigmaIntegration(5.);
132 response->SetChargeSlope(27.);
133 response->SetChargeSpread(0.18, 0.18);
134 response->SetMaxAdc(4096);
135 response->SetAlphaFeedback(0.036);
136 response->SetEIonisation(26.e-9);
137 response->SetSqrtKx3(0.77459667);
138 response->SetKx2(0.962);
139 response->SetKx4(0.379);
140 response->SetSqrtKy3(0.77459667);
141 response->SetKy2(0.962);
142 response->SetKy4(0.379);
143 response->SetPitch(0.25);
144 response->SetWireSag(0); // 1->On, 0->Off
145 response->SetVoltage(2150); // Should only be 2000, 2050, 2100 or 2150
c71fc6da 146//
147// AliRICH *RICH = (AliRICH *) gAlice->GetDetector("RICH");
148
237c933d 149 fCkovNumber=0;
150 fFreonProd=0;
7f36f6bc 151 Int_t i=0;
c71fc6da 152
237c933d 153 fChambers = new TObjArray(kNCH);
7f36f6bc 154 for (i=0; i<kNCH; i++) {
c71fc6da 155
156 (*fChambers)[i] = new AliRICHChamber();
157
158 }
159
7f36f6bc 160 for (i=0; i<kNCH; i++) {
237c933d 161 SetGeometryModel(i,geometry);
c4384528 162 SetSegmentationModel(i, segmentation);
163 SetResponseModel(i, response);
8fa8fc03 164 SetDebugLevel(0);
6e36c0f2 165 }
ddae0931 166}
167
168
6e36c0f2 169
ddae0931 170//___________________________________________
171
172void AliRICHv0::Init()
173{
c71fc6da 174
175 printf("*********************************** RICH_INIT ***********************************\n");
176 printf("* *\n");
177 printf("* AliRICHv0 Default version started *\n");
178 printf("* *\n");
179
180
a2f7eaf6 181 AliSegmentation* segmentation;
c71fc6da 182 AliRICHGeometry* geometry;
183 AliRICHResponse* response;
184
185
ddae0931 186 //
187 // Initialize Tracking Chambers
188 //
2fc6393f 189 for (Int_t i=0; i<kNCH; i++) {
6e36c0f2 190 //printf ("i:%d",i);
a2f7eaf6 191 ( (AliRICHChamber*) (*fChambers)[i])->Init(i);
6e36c0f2 192 }
ddae0931 193
194 //
195 // Set the chamber (sensitive region) GEANT identifier
196
6e36c0f2 197 ((AliRICHChamber*)(*fChambers)[0])->SetGid(1);
198 ((AliRICHChamber*)(*fChambers)[1])->SetGid(2);
199 ((AliRICHChamber*)(*fChambers)[2])->SetGid(3);
200 ((AliRICHChamber*)(*fChambers)[3])->SetGid(4);
201 ((AliRICHChamber*)(*fChambers)[4])->SetGid(5);
202 ((AliRICHChamber*)(*fChambers)[5])->SetGid(6);
203 ((AliRICHChamber*)(*fChambers)[6])->SetGid(7);
204
205 Float_t pos1[3]={0,471.8999,165.2599};
206 Chamber(0).SetChamberTransform(pos1[0],pos1[1],pos1[2],new TRotMatrix("rot993","rot993",90,0,70.69,90,19.30999,-90));
207
208 Float_t pos2[3]={171,470,0};
209 Chamber(1).SetChamberTransform(pos2[0],pos2[1],pos2[2],new TRotMatrix("rot994","rot994",90,-20,90,70,0,0));
210
211 Float_t pos3[3]={0,500,0};
212 Chamber(2).SetChamberTransform(pos3[0],pos3[1],pos3[2],new TRotMatrix("rot995","rot995",90,0,90,90,0,0));
213
214 Float_t pos4[3]={-171,470,0};
215 Chamber(3).SetChamberTransform(pos4[0],pos4[1],pos4[2], new TRotMatrix("rot996","rot996",90,20,90,110,0,0));
216
217 Float_t pos5[3]={161.3999,443.3999,-165.3};
218 Chamber(4).SetChamberTransform(pos5[0],pos5[1],pos5[2],new TRotMatrix("rot997","rot997",90,340,108.1999,70,18.2,70));
219
220 Float_t pos6[3]={0., 471.9, -165.3,};
221 Chamber(5).SetChamberTransform(pos6[0],pos6[1],pos6[2],new TRotMatrix("rot998","rot998",90,0,109.3099,90,19.30999,90));
222
223 Float_t pos7[3]={-161.399,443.3999,-165.3};
224 Chamber(6).SetChamberTransform(pos7[0],pos7[1],pos7[2],new TRotMatrix("rot999","rot999",90,20,108.1999,110,18.2,110));
ddae0931 225
c71fc6da 226 segmentation=Chamber(0).GetSegmentationModel(0);
227 geometry=Chamber(0).GetGeometryModel();
228 response=Chamber(0).GetResponseModel();
229
230
231 printf("* Pads : %3dx%3d *\n",segmentation->Npx(),segmentation->Npy());
232 printf("* Pad size : %5.2f x%5.2f mm2 *\n",segmentation->Dpx(),segmentation->Dpy());
8fa8fc03 233 printf("* Gap Thickness : %5.1f cm *\n",geometry->GetGapThickness());
234 printf("* Radiator Width : %5.1f cm *\n",geometry->GetQuartzWidth());
235 printf("* Radiator Length : %5.1f cm *\n",geometry->GetQuartzLength());
236 printf("* Freon Thickness : %5.1f cm *\n",geometry->GetFreonThickness());
c71fc6da 237 printf("* Charge Slope : %5.1f ADC *\n",response->ChargeSlope());
2fc6393f 238 printf("* Feedback Prob. : %5.2f %% *\n",response->AlphaFeedback()*100);
c71fc6da 239 printf("* *\n");
c71fc6da 240 printf("*********************************************************************************\n");
241
ddae0931 242}
243