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