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