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