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