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