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