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