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