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