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