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