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