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