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