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