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