]> git.uio.no Git - u/mrichter/AliRoot.git/blame - RICH/AliRICHv2.cxx
Latest version
[u/mrichter/AliRoot.git] / RICH / AliRICHv2.cxx
CommitLineData
0fad2f8d 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/*
17 $Log$
9e1a0ddb 18 Revision 1.7 2001/05/10 12:28:26 jbarbosa
19 Repositioned the RICH modules.
20
449e6743 21 Revision 1.6 2001/02/13 20:10:45 jbarbosa
22 Removed call to SetNSec() (obsolete). Fixed bug in chamber initialisation (not all chambers were initialised).
23
2fc6393f 24 Revision 1.5 2000/12/20 14:08:14 jbarbosa
25 Removed dependencies on TGeant3 (thanks to F. Carminati and I. Hrivnacova)
26
5cfcdf54 27 Revision 1.4 2000/12/18 17:44:49 jbarbosa
28 Took two lines out of output.
29
f2de8657 30 Revision 1.3 2000/10/03 21:44:09 morsch
31 Use AliSegmentation and AliHit abstract base classes.
32
a2f7eaf6 33 Revision 1.2 2000/07/10 15:28:39 fca
34 Correction of the inheritance scheme
35
452a64c6 36 Revision 1.1 2000/06/30 16:40:03 dibari
37 New configurale version.
38
0fad2f8d 39 Revision 1.4 2000/06/13 13:13:40 jbarbosa
40 Correcting previous correction...
41
42 Revision 1.3 2000/06/13 13:06:38 jbarbosa
43 Fixed compiling error for HP (multiple declaration)
44
45 Revision 1.2 2000/06/12 15:36:16 jbarbosa
46 Cleaned up version.
47
48 Revision 1.1 2000/06/09 15:00:31 jbarbosa
49 New full version. All parameters configurable.
50
51 Revision 1.9 2000/05/31 08:19:38 jbarbosa
52 Fixed bug in StepManager
53
54 Revision 1.8 2000/05/26 17:30:08 jbarbosa
55 Cerenkov angle now stored within cerenkov data structure.
56
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
63 Revision 1.6 2000/04/28 11:51:58 morsch
64 Dimensions of arrays hits and Ckov_data corrected.
65
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
70*/
71
72
73
74//////////////////////////////////////////////////////////
75// Manager and hits classes for set: RICH full version //
76//////////////////////////////////////////////////////////
77
78#include <TTUBE.h>
79#include <TNode.h>
80#include <TRandom.h>
81#include <TParticle.h>
82
83#include "AliRICHv2.h"
84#include "AliRICHHit.h"
85#include "AliRun.h"
86#include "AliMC.h"
87#include "iostream.h"
88#include "AliCallf77.h"
89#include "AliConst.h"
90#include "AliPDG.h"
0fad2f8d 91
92ClassImp(AliRICHv2)
93
94//___________________________________________
452a64c6 95AliRICHv2::AliRICHv2()
0fad2f8d 96{
97
98// Default constructor fo AliRICHvv2 (full version)
99
100 //fChambers = 0;
101}
102
103//___________________________________________
104AliRICHv2::AliRICHv2(const char *name, const char *title)
452a64c6 105 : AliRICH(name,title)
0fad2f8d 106{
107
108// Full version of RICH with hits and diagnostics, CONFIURABLE
109
110 fCkovNumber=0;
111 fFreonProd=0;
112
113 fChambers = new TObjArray(kNCH);
114 for (Int_t i=0; i<kNCH; i++) {
115
116 (*fChambers)[i] = new AliRICHChamber();
117
118 }
119}
120
121void AliRICHv2::Init()
122{
123
9e1a0ddb 124 if(fDebug) {
125 printf("%s: *********************************** RICH_INIT ***********************************\n",ClassName());
126 printf("%s: * *\n",ClassName());
127 printf("%s: * AliRICHv2 Configurable version started *\n",ClassName());
128 printf("%s: * *\n",ClassName());
129 }
0fad2f8d 130
131
a2f7eaf6 132 AliSegmentation* segmentation;
0fad2f8d 133 AliRICHGeometry* geometry;
134 AliRICHResponse* response;
135
136
137 //
138 // Initialize Tracking Chambers
139 //
2fc6393f 140 for (Int_t i=0; i<kNCH; i++) {
0fad2f8d 141 //printf ("i:%d",i);
a2f7eaf6 142 ( (AliRICHChamber*) (*fChambers)[i])->Init(i);
0fad2f8d 143 }
144
145 //
146 // Set the chamber (sensitive region) GEANT identifier
147
148 ((AliRICHChamber*)(*fChambers)[0])->SetGid(1);
149 ((AliRICHChamber*)(*fChambers)[1])->SetGid(2);
150 ((AliRICHChamber*)(*fChambers)[2])->SetGid(3);
151 ((AliRICHChamber*)(*fChambers)[3])->SetGid(4);
152 ((AliRICHChamber*)(*fChambers)[4])->SetGid(5);
153 ((AliRICHChamber*)(*fChambers)[5])->SetGid(6);
154 ((AliRICHChamber*)(*fChambers)[6])->SetGid(7);
155
0fad2f8d 156 segmentation=Chamber(0).GetSegmentationModel(0);
157 geometry=Chamber(0).GetGeometryModel();
158 response=Chamber(0).GetResponseModel();
449e6743 159
160 Float_t offset = 490 + 1.276 - geometry->GetGapThickness()/2; //distance from center of mother volume to methane
161 Float_t deltaphi = 19.5; //phi angle between center of chambers - z direction
162 Float_t deltatheta = 20; //theta angle between center of chambers - x direction
163 Float_t cosphi = TMath::Cos(deltaphi*TMath::Pi()/180);
164 Float_t sinphi = TMath::Sin(deltaphi*TMath::Pi()/180);
165 Float_t costheta = TMath::Cos(deltatheta*TMath::Pi()/180);
166 Float_t sintheta = TMath::Sin(deltatheta*TMath::Pi()/180);
167
168 Float_t pos1[3]={0. , offset*cosphi , offset*sinphi};
169 Float_t pos2[3]={offset*sintheta , offset*costheta , 0. };
170 Float_t pos3[3]={0. , offset , 0.};
171 Float_t pos4[3]={-offset*sintheta , offset*costheta , 0.};
172 Float_t pos5[3]={offset*sinphi , offset*costheta*cosphi, -offset*sinphi};
173 Float_t pos6[3]={0. , offset*cosphi , -offset*sinphi};
174 Float_t pos7[3]={ -offset*sinphi , offset*costheta*cosphi, -offset*sinphi};
175
176 Chamber(0).SetChamberTransform(pos1[0],pos1[1],pos1[2],new TRotMatrix("rot993","rot993",90., 0. , 90. - deltaphi, 90. , deltaphi, -90. ));
177 Chamber(1).SetChamberTransform(pos2[0],pos2[1],pos2[2],new TRotMatrix("rot994","rot994",90., -deltatheta , 90. , 90.- deltatheta , 0. , 0. ));
178 Chamber(2).SetChamberTransform(pos3[0],pos3[1],pos3[2],new TRotMatrix("rot995","rot995",90., 0. , 90. , 90. , 0. , 0. ));
179 Chamber(3).SetChamberTransform(pos4[0],pos4[1],pos4[2],new TRotMatrix("rot996","rot996",90., deltatheta , 90. , 90 + deltatheta , 0. , 0. ));
180 Chamber(4).SetChamberTransform(pos5[0],pos5[1],pos5[2],new TRotMatrix("rot997","rot997",90., 360. - deltatheta, 108.2 , 90.- deltatheta ,18.2 , 90 - deltatheta));
181 Chamber(5).SetChamberTransform(pos6[0],pos6[1],pos6[2],new TRotMatrix("rot998","rot998",90., 0. , 90 + deltaphi , 90. , deltaphi, 90. ));
182 Chamber(6).SetChamberTransform(pos7[0],pos7[1],pos7[2],new TRotMatrix("rot999","rot999",90., deltatheta , 108.2 , 90.+ deltatheta ,18.2 , 90 + deltatheta));
0fad2f8d 183
9e1a0ddb 184 if(fDebug) {
185 printf("%s: * Pads : %3dx%3d *\n",
186 ClassName(),segmentation->Npx(),segmentation->Npy());
187 printf("%s: * Pad size : %5.2f x%5.2f mm2 *\n",
188 ClassName(),segmentation->Dpx(),segmentation->Dpy());
189 printf("%s: * Gap Thickness : %5.1f cm *\n",
190 ClassName(),geometry->GetGapThickness());
191 printf("%s: * Radiator Width : %5.1f cm *\n",
192 ClassName(),geometry->GetQuartzWidth());
193 printf("%s: * Radiator Length : %5.1f cm *\n",
194 ClassName(),geometry->GetQuartzLength());
195 printf("%s: * Freon Thickness : %5.1f cm *\n",
196 ClassName(),geometry->GetFreonThickness());
197 printf("%s: * Charge Slope : %5.1f ADC *\n",
198 ClassName(),response->ChargeSlope());
199 printf("%s: * Feedback Prob. : %5.2f %% *\n",
200 ClassName(),response->AlphaFeedback()*100);
201 printf("%s: * Debug Level : %3d *\n",
202 ClassName(),GetDebugLevel());
203 printf("%s: * *\n",
204 ClassName());
205 printf("%s: *********************************************************************************\n",
206 ClassName());
207 }
0fad2f8d 208}
209