1 <!DOCTYPE HTML PUBLIC "-// IETF/DTD HTML 2.0// EN">
4 <!-- Author: ROOT team (rootdev@hpsalo.cern.ch) -->
6 <!-- Date: Sun Mar 12 00:45:57 2000 -->
9 <title>AliPHOSv0 - source file</title>
10 <link rev=made href="mailto:rootdev@root.cern.ch">
11 <meta name="rating" content="General">
12 <meta name="objecttype" content="Manual">
13 <meta name="keywords" content="software development, oo, object oriented, unix, x11, motif, windows nt, c++, html, rene brun, fons rademakers">
14 <meta name="description" content="ROOT - An Object Oriented Framework For Large Scale Data Analysis.">
16 <body BGCOLOR="#ffffff" LINK="#0000ff" VLINK="#551a8b" ALINK="#ff0000" TEXT="#000000">
17 <a name="TopOfPage"></a>
19 /**************************************************************************
20 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
22 * Author: The ALICE Off-line Project. *
23 * Contributors are mentioned in the code where appropriate. *
25 * Permission to use, copy, modify and distribute this software and its *
26 * documentation strictly for non-commercial purposes is hereby granted *
27 * without fee, provided that the above copyright notice appears in all *
28 * copies and that both the copyright notice and this permission notice *
29 * appear in the supporting documentation. The authors make no claims *
30 * about the suitability of this software for any purpose. It is *
31 * provided "as is" without express or implied warranty. *
32 **************************************************************************/
36 <b>//_________________________________________________________________________</b>
37 <b>// Implementation version v0 of PHOS Manager class </b>
38 <b>// Layout EMC + PPSD has name GPS2 </b>
40 <b>//*-- Author: Yves Schutz (SUBATECH)</b>
43 <b>// --- ROOT system ---</b>
49 <b>// --- Standard library ---</b>
51 #include <cstdio>
52 #include <cstring>
53 #include <cstdlib>
54 #include <strstream>
55 #include <cassert>
57 <b>// --- AliRoot header files ---</b>
59 #include "<a href="../AliPHOSv0.h">AliPHOSv0.h</a>"
60 #include "<a href="../AliPHOSHit.h">AliPHOSHit.h</a>"
61 #include "<a href="../AliPHOSDigit.h">AliPHOSDigit.h</a>"
62 #include "<a href="../AliPHOSReconstructioner.h">AliPHOSReconstructioner.h</a>"
68 <b>//____________________________________________________________________________</b>
69 <a name="AliPHOSv0:AliPHOSv0"> </a><a href=".././AliPHOSv0.html#AliPHOSv0:AliPHOSv0">AliPHOSv0::AliPHOSv0</a>()
72 <a href=".././AliPHOSv0.html#AliPHOSv0:fNTmpHits">fNTmpHits</a> = 0 ;
73 <a href=".././AliPHOSv0.html#AliPHOSv0:fTmpHits">fTmpHits</a> = 0 ;
76 <b>//____________________________________________________________________________</b>
77 <a name="AliPHOSv0:AliPHOSv0"> </a><a href=".././AliPHOSv0.html#AliPHOSv0:AliPHOSv0">AliPHOSv0::AliPHOSv0</a>(const <a href="../ListOfTypes.html#char">char</a> *name, const <a href="../ListOfTypes.html#char">char</a> *title):
78 <a href=".././AliPHOS.html">AliPHOS</a>(name,title)
80 <b> // ctor : title is used to identify the layout</b>
81 <b> // GPS2 = 5 modules (EMC + PPSD) </b>
82 <b> // We use 2 arrays of hits :</b>
84 <b> // - fHits (the "normal" one), which retains the hits associated with</b>
85 <b> // the current primary particle being tracked</b>
86 <b> // (this array is reset after each primary has been tracked).</b>
88 <b> // - <a href=".././AliPHOSv0.html#AliPHOSv0:fTmpHits">fTmpHits</a>, which retains all the hits of the current event. It </b>
89 <b> // is used for the digitization part.</b>
91 <a href=".././AliPHOSv0.html#AliPHOSv0:fPinElectronicNoise">fPinElectronicNoise</a> = 0.010 ;
92 <a href=".././AliPHOSv0.html#AliPHOSv0:fDigitThreshold">fDigitThreshold</a> = 1. ; // 1 GeV
94 fHits = new TClonesArray("<a href=".././AliPHOSHit.html">AliPHOSHit</a>",100) ;
95 gAlice->AddHitList(fHits) ;
97 <a href=".././AliPHOSv0.html#AliPHOSv0:fTmpHits">fTmpHits</a>= new TClonesArray("<a href=".././AliPHOSHit.html">AliPHOSHit</a>",100) ;
99 <a href=".././AliPHOSv0.html#AliPHOSv0:fNTmpHits">fNTmpHits</a> = fNhits = 0 ;
101 fDigits = new TClonesArray("<a href=".././AliPHOSDigit.html">AliPHOSDigit</a>",100) ;
104 fIshunt = 1 ; // All hits are associated with primary particles
106 <b> // gets an instance of the geometry parameters class </b>
108 <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a> = <a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetInstance">AliPHOSGeometry::GetInstance</a>(title, "") ;
110 if (<a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:IsInitialized">IsInitialized</a>() )
111 cout << "<a href=".././AliPHOSv0.html">AliPHOSv0</a> : PHOS geometry intialized for " << <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>->GetName() << endl ;
113 cout << "<a href=".././AliPHOSv0.html">AliPHOSv0</a> : PHOS geometry initialization failed !" << endl ;
115 <b>//____________________________________________________________________________</b>
116 <a name="AliPHOSv0:AliPHOSv0"> </a><a href=".././AliPHOSv0.html#AliPHOSv0:AliPHOSv0">AliPHOSv0::AliPHOSv0</a>(<a href=".././AliPHOSReconstructioner.html">AliPHOSReconstructioner</a> * Reconstructioner, const <a href="../ListOfTypes.html#char">char</a> *name, const <a href="../ListOfTypes.html#char">char</a> *title):
117 <a href=".././AliPHOS.html">AliPHOS</a>(name,title)
119 <b> // ctor : title is used to identify the layout</b>
120 <b> // GPS2 = 5 modules (EMC + PPSD) </b>
121 <b> // We use 2 arrays of hits :</b>
123 <b> // - fHits (the "normal" one), which retains the hits associated with</b>
124 <b> // the current primary particle being tracked</b>
125 <b> // (this array is reset after each primary has been tracked).</b>
127 <b> // - <a href=".././AliPHOSv0.html#AliPHOSv0:fTmpHits">fTmpHits</a>, which retains all the hits of the current event. It </b>
128 <b> // is used for the digitization part.</b>
130 <a href=".././AliPHOSv0.html#AliPHOSv0:fPinElectronicNoise">fPinElectronicNoise</a> = 0.010 ;
131 fHits = new TClonesArray("<a href=".././AliPHOSHit.html">AliPHOSHit</a>",100) ;
132 fDigits = new TClonesArray("<a href=".././AliPHOSDigit.html">AliPHOSDigit</a>",100) ;
133 <a href=".././AliPHOSv0.html#AliPHOSv0:fTmpHits">fTmpHits</a>= new TClonesArray("<a href=".././AliPHOSHit.html">AliPHOSHit</a>",100) ;
135 <a href=".././AliPHOSv0.html#AliPHOSv0:fNTmpHits">fNTmpHits</a> = fNhits = 0 ;
137 fIshunt = 1 ; // All hits are associated with primary particles
139 <b> // gets an instance of the geometry parameters class </b>
140 <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a> = <a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetInstance">AliPHOSGeometry::GetInstance</a>(title, "") ;
142 if (<a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:IsInitialized">IsInitialized</a>() )
143 cout << "<a href=".././AliPHOSv0.html">AliPHOSv0</a> : PHOS geometry intialized for " << <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>->GetName() << endl ;
145 cout << "<a href=".././AliPHOSv0.html">AliPHOSv0</a> : PHOS geometry initialization failed !" << endl ;
147 <b> // Defining the PHOS Reconstructioner</b>
149 <a href=".././AliPHOSv0.html#AliPHOSv0:fReconstructioner">fReconstructioner</a> = Reconstructioner ;
152 <b>//____________________________________________________________________________</b>
153 <a name="AliPHOSv0:~AliPHOSv0"> </a><a href=".././AliPHOSv0.html">AliPHOSv0</a>::~<a href=".././AliPHOSv0.html">AliPHOSv0</a>()
157 <a href=".././AliPHOSv0.html#AliPHOSv0:fTmpHits">fTmpHits</a>->Delete() ;
158 delete <a href=".././AliPHOSv0.html#AliPHOSv0:fTmpHits">fTmpHits</a> ;
159 <a href=".././AliPHOSv0.html#AliPHOSv0:fTmpHits">fTmpHits</a> = 0 ;
161 <a href=".././AliPHOSv0.html#AliPHOSv0:fEmcClusters">fEmcClusters</a>->Delete() ;
162 delete <a href=".././AliPHOSv0.html#AliPHOSv0:fEmcClusters">fEmcClusters</a> ;
163 <a href=".././AliPHOSv0.html#AliPHOSv0:fEmcClusters">fEmcClusters</a> = 0 ;
165 <a href=".././AliPHOSv0.html#AliPHOSv0:fPpsdClusters">fPpsdClusters</a>->Delete() ;
166 delete <a href=".././AliPHOSv0.html#AliPHOSv0:fPpsdClusters">fPpsdClusters</a> ;
167 <a href=".././AliPHOSv0.html#AliPHOSv0:fPpsdClusters">fPpsdClusters</a> = 0 ;
169 <a href=".././AliPHOSv0.html#AliPHOSv0:fTrackSegments">fTrackSegments</a>->Delete() ;
170 delete <a href=".././AliPHOSv0.html#AliPHOSv0:fTrackSegments">fTrackSegments</a> ;
171 <a href=".././AliPHOSv0.html#AliPHOSv0:fTrackSegments">fTrackSegments</a> = 0 ;
174 <b>//____________________________________________________________________________</b>
175 <a name="AliPHOSv0:AddHit"> </a><a href="../ListOfTypes.html#void">void</a> <a href=".././AliPHOSv0.html#AliPHOSv0:AddHit">AliPHOSv0::AddHit</a>(<a href="../ListOfTypes.html#Int_t">Int_t</a> primary, <a href="../ListOfTypes.html#Int_t">Int_t</a> Id, <a href="../ListOfTypes.html#Float_t">Float_t</a> * hits)
177 <b> // Add a hit to the hit list.</b>
178 <b> // A PHOS hit is the sum of all hits in a single crystal</b>
179 <b> // or in a single PPSD gas cell</b>
181 <a href="../ListOfTypes.html#Int_t">Int_t</a> hitCounter ;
182 TClonesArray &ltmphits = *<a href=".././AliPHOSv0.html#AliPHOSv0:fTmpHits">fTmpHits</a> ;
183 <a href=".././AliPHOSHit.html">AliPHOSHit</a> *newHit ;
184 <a href=".././AliPHOSHit.html">AliPHOSHit</a> *curHit ;
185 <a href="../ListOfTypes.html#Bool_t">Bool_t</a> deja = kFALSE ;
187 <b> // In any case, fills the fTmpHit TClonesArray (with "accumulated hits")</b>
189 newHit = new <a href=".././AliPHOSHit.html">AliPHOSHit</a>(primary, Id, hits) ;
191 for ( hitCounter = 0 ; hitCounter < <a href=".././AliPHOSv0.html#AliPHOSv0:fNTmpHits">fNTmpHits</a> && !deja ; hitCounter++ ) {
192 curHit = (<a href=".././AliPHOSHit.html">AliPHOSHit</a>*) ltmphits[hitCounter] ;
193 if( *curHit == *newHit ) {
194 *curHit = *curHit + *newHit ;
200 new(ltmphits[<a href=".././AliPHOSv0.html#AliPHOSv0:fNTmpHits">fNTmpHits</a>]) <a href=".././AliPHOSHit.html">AliPHOSHit</a>(*newHit) ;
201 <a href=".././AliPHOSv0.html#AliPHOSv0:fNTmpHits">fNTmpHits</a>++ ;
204 <b> // Please note that the <a href=".././AliPHOSv0.html#AliPHOSv0:fTmpHits">fTmpHits</a> array must survive up to the</b>
205 <b> // end of the events, so it does not appear e.g. in ResetHits() (</b>
206 <b> // which is called at the end of each primary). </b>
208 <b> // if (IsTreeSelected('H')) {</b>
209 <b> // And, if we really want raw hits tree, have the fHits array filled also</b>
210 <b> // TClonesArray &lhits = *fHits;</b>
211 <b> // new(lhits[fNhits]) <a href=".././AliPHOSHit.html">AliPHOSHit</a>(*newHit) ;</b>
212 <b> // fNhits++ ;</b>
220 <b>//____________________________________________________________________________</b>
221 <a name="AliPHOSv0:BuildGeometry"> </a><a href="../ListOfTypes.html#void">void</a> <a href=".././AliPHOSv0.html#AliPHOSv0:BuildGeometry">AliPHOSv0::BuildGeometry</a>()
223 <b> // Build the PHOS geometry for the ROOT display</b>
227 PHOS in ALICE displayed by root
233 <IMG Align=BOTTOM ALT="All Views" SRC="../images/AliPHOSv0AllViews.gif">
238 <IMG Align=BOTTOM ALT="Front View" SRC="../images/AliPHOSv0FrontView.gif">
243 <IMG Align=BOTTOM ALT="3D View 1" SRC="../images/AliPHOSv03DView1.gif">
248 <IMG Align=BOTTOM ALT="3D View 2" SRC="../images/AliPHOSv03DView2.gif">
254 this-><a href="#AliPHOSv0:BuildGeometryforPHOS">BuildGeometryforPHOS</a>() ;
255 if ( ( strcmp(<a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>->GetName(), "GPS2" ) == 0 ) )
256 this-><a href="#AliPHOSv0:BuildGeometryforPPSD">BuildGeometryforPPSD</a>() ;
258 cout << "<a href=".././AliPHOSv0.html#AliPHOSv0:BuildGeometry">AliPHOSv0::BuildGeometry</a> : no charged particle identification system installed" << endl;
262 <b>//____________________________________________________________________________</b>
263 <a name="AliPHOSv0:BuildGeometryforPHOS"> </a><a href="../ListOfTypes.html#void">void</a> <a href=".././AliPHOSv0.html#AliPHOSv0:BuildGeometryforPHOS">AliPHOSv0::BuildGeometryforPHOS</a>(<a href="../ListOfTypes.html#void">void</a>)
265 <b> // Build the PHOS-EMC geometry for the ROOT display</b>
267 const <a href="../ListOfTypes.html#Int_t">Int_t</a> kColorPHOS = kRed ;
268 const <a href="../ListOfTypes.html#Int_t">Int_t</a> kColorXTAL = kBlue ;
270 <a href="../ListOfTypes.html#Double_t">Double_t</a> const kRADDEG = 180.0 / kPI ;
272 new TBRIK( "OuterBox", "PHOS box", "<a href="../ListOfTypes.html#void">void</a>", <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetOuterBoxSize">GetOuterBoxSize</a>(0)/2,
273 <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetOuterBoxSize">GetOuterBoxSize</a>(1)/2,
274 <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetOuterBoxSize">GetOuterBoxSize</a>(2)/2 );
276 <b> // Textolit Wall box, position inside PHOS </b>
278 new TBRIK( "TextolitBox", "PHOS Textolit box ", "<a href="../ListOfTypes.html#void">void</a>", <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetTextolitBoxSize">GetTextolitBoxSize</a>(0)/2,
279 <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetTextolitBoxSize">GetTextolitBoxSize</a>(1)/2,
280 <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetTextolitBoxSize">GetTextolitBoxSize</a>(2)/2);
282 <b> // Polystyrene Foam Plate</b>
284 new TBRIK( "UpperFoamPlate", "PHOS Upper foam plate", "<a href="../ListOfTypes.html#void">void</a>", <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetTextolitBoxSize">GetTextolitBoxSize</a>(0)/2,
285 <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetSecondUpperPlateThickness">GetSecondUpperPlateThickness</a>()/2,
286 <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetTextolitBoxSize">GetTextolitBoxSize</a>(2)/2 ) ;
288 <b> // Air Filled Box</b>
290 new TBRIK( "AirFilledBox", "PHOS air filled box", "<a href="../ListOfTypes.html#void">void</a>", <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetAirFilledBoxSize">GetAirFilledBoxSize</a>(0)/2,
291 <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetAirFilledBoxSize">GetAirFilledBoxSize</a>(1)/2,
292 <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetAirFilledBoxSize">GetAirFilledBoxSize</a>(2)/2 );
294 <b> // Crystals Box</b>
296 <a href="../ListOfTypes.html#Float_t">Float_t</a> xtlX = <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetCrystalSize">GetCrystalSize</a>(0) ;
297 <a href="../ListOfTypes.html#Float_t">Float_t</a> xtlY = <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetCrystalSize">GetCrystalSize</a>(1) ;
298 <a href="../ListOfTypes.html#Float_t">Float_t</a> xtlZ = <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetCrystalSize">GetCrystalSize</a>(2) ;
300 <a href="../ListOfTypes.html#Float_t">Float_t</a> xl = <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetNPhi">GetNPhi</a>() * ( xtlX + 2 * <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetGapBetweenCrystals">GetGapBetweenCrystals</a>() ) / 2.0 + <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetModuleBoxThickness">GetModuleBoxThickness</a>() ;
301 <a href="../ListOfTypes.html#Float_t">Float_t</a> yl = ( xtlY + <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetCrystalSupportHeight">GetCrystalSupportHeight</a>() + <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetCrystalWrapThickness">GetCrystalWrapThickness</a>() + <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetCrystalHolderThickness">GetCrystalHolderThickness</a>() ) / 2.0
302 + <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetModuleBoxThickness">GetModuleBoxThickness</a>() / 2.0 ;
303 <a href="../ListOfTypes.html#Float_t">Float_t</a> zl = <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetNZ">GetNZ</a>() * ( xtlZ + 2 * <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetGapBetweenCrystals">GetGapBetweenCrystals</a>() ) / 2.0 + <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetModuleBoxThickness">GetModuleBoxThickness</a>() ;
305 new TBRIK( "CrystalsBox", "PHOS crystals box", "<a href="../ListOfTypes.html#void">void</a>", xl, yl, zl ) ;
307 <b>// position PHOS into ALICE</b>
309 <a href="../ListOfTypes.html#Float_t">Float_t</a> r = <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetIPtoOuterCoverDistance">GetIPtoOuterCoverDistance</a>() + <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetOuterBoxSize">GetOuterBoxSize</a>(1) / 2.0 ;
310 <a href="../ListOfTypes.html#Int_t">Int_t</a> number = 988 ;
311 <a href="../ListOfTypes.html#Float_t">Float_t</a> pphi = TMath::ATan( <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetOuterBoxSize">GetOuterBoxSize</a>(0) / ( 2.0 * <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetIPtoOuterCoverDistance">GetIPtoOuterCoverDistance</a>() ) ) ;
313 TNode * top = gAlice->GetGeometry()->GetNode("alice") ;
315 <a href="../ListOfTypes.html#char">char</a> * nodename = new <a href="../ListOfTypes.html#char">char</a>[20] ;
316 <a href="../ListOfTypes.html#char">char</a> * rotname = new <a href="../ListOfTypes.html#char">char</a>[20] ;
318 for( <a href="../ListOfTypes.html#Int_t">Int_t</a> i = 1; i <= <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetNModules">GetNModules</a>(); i++ ) {
319 <a href="../ListOfTypes.html#Float_t">Float_t</a> angle = pphi * 2 * ( i - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetNModules">GetNModules</a>() / 2.0 - 0.5 ) ;
320 sprintf(rotname, "%s%d", "rot", number++) ;
321 new TRotMatrix(rotname, rotname, 90, angle, 90, 90 + angle, 0, 0);
323 sprintf(nodename,"%s%d", "Module", i) ;
324 <a href="../ListOfTypes.html#Float_t">Float_t</a> x = r * TMath::Sin( angle / kRADDEG ) ;
325 <a href="../ListOfTypes.html#Float_t">Float_t</a> y = -r * TMath::Cos( angle / kRADDEG ) ;
326 TNode * outerboxnode = new TNode(nodename, nodename, "OuterBox", x, y, 0, rotname ) ;
327 outerboxnode->SetLineColor(kColorPHOS) ;
328 fNodes->Add(outerboxnode) ;
329 outerboxnode->cd() ;
330 <b> // now inside the outer box the textolit box</b>
331 y = ( <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetOuterBoxThickness">GetOuterBoxThickness</a>(1) - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetUpperPlateThickness">GetUpperPlateThickness</a>() ) / 2. ;
332 sprintf(nodename,"%s%d", "TexBox", i) ;
333 TNode * textolitboxnode = new TNode(nodename, nodename, "TextolitBox", 0, y, 0) ;
334 textolitboxnode->SetLineColor(kColorPHOS) ;
335 fNodes->Add(textolitboxnode) ;
336 <b> // upper foam plate inside outre box</b>
337 outerboxnode->cd() ;
338 sprintf(nodename, "%s%d", "UFPlate", i) ;
339 y = ( <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetTextolitBoxSize">GetTextolitBoxSize</a>(1) - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetSecondUpperPlateThickness">GetSecondUpperPlateThickness</a>() ) / 2.0 ;
340 TNode * upperfoamplatenode = new TNode(nodename, nodename, "UpperFoamPlate", 0, y, 0) ;
341 upperfoamplatenode->SetLineColor(kColorPHOS) ;
342 fNodes->Add(upperfoamplatenode) ;
343 <b> // air filled box inside textolit box (not drawn)</b>
344 textolitboxnode->cd();
345 y = ( <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetTextolitBoxSize">GetTextolitBoxSize</a>(1) - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetAirFilledBoxSize">GetAirFilledBoxSize</a>(1) ) / 2.0 - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetSecondUpperPlateThickness">GetSecondUpperPlateThickness</a>() ;
346 sprintf(nodename, "%s%d", "AFBox", i) ;
347 TNode * airfilledboxnode = new TNode(nodename, nodename, "AirFilledBox", 0, y, 0) ;
348 fNodes->Add(airfilledboxnode) ;
349 <b> // crystals box inside air filled box</b>
350 airfilledboxnode->cd() ;
351 y = <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetAirFilledBoxSize">GetAirFilledBoxSize</a>(1) / 2.0 - yl
352 - ( <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetIPtoCrystalSurface">GetIPtoCrystalSurface</a>() - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetIPtoOuterCoverDistance">GetIPtoOuterCoverDistance</a>() - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetModuleBoxThickness">GetModuleBoxThickness</a>()
353 - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetUpperPlateThickness">GetUpperPlateThickness</a>() - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetSecondUpperPlateThickness">GetSecondUpperPlateThickness</a>() ) ;
354 sprintf(nodename, "%s%d", "XTBox", i) ;
355 TNode * crystalsboxnode = new TNode(nodename, nodename, "CrystalsBox", 0, y, 0) ;
356 crystalsboxnode->SetLineColor(kColorXTAL) ;
357 fNodes->Add(crystalsboxnode) ;
361 <b>//____________________________________________________________________________</b>
362 <a name="AliPHOSv0:BuildGeometryforPPSD"> </a><a href="../ListOfTypes.html#void">void</a> <a href=".././AliPHOSv0.html#AliPHOSv0:BuildGeometryforPPSD">AliPHOSv0::BuildGeometryforPPSD</a>(<a href="../ListOfTypes.html#void">void</a>)
364 <b> // Build the PHOS-PPSD geometry for the ROOT display</b>
368 PPSD displayed by root
371 <LI> Zoom on PPSD: Front View
374 <IMG Align=BOTTOM ALT="PPSD Front View" SRC="../images/AliPHOSv0PPSDFrontView.gif">
376 <LI> Zoom on PPSD: Perspective View
379 <IMG Align=BOTTOM ALT="PPSD Prespective View" SRC="../images/AliPHOSv0PPSDPerspectiveView.gif">
384 <a href="../ListOfTypes.html#Double_t">Double_t</a> const kRADDEG = 180.0 / kPI ;
386 const <a href="../ListOfTypes.html#Int_t">Int_t</a> kColorPHOS = kRed ;
387 const <a href="../ListOfTypes.html#Int_t">Int_t</a> kColorPPSD = kGreen ;
388 const <a href="../ListOfTypes.html#Int_t">Int_t</a> kColorGas = kBlue ;
389 const <a href="../ListOfTypes.html#Int_t">Int_t</a> kColorAir = kYellow ;
391 <b> // Box for a full PHOS module</b>
393 new TBRIK( "PPSDBox", "PPSD box", "<a href="../ListOfTypes.html#void">void</a>", <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPPSDBoxSize">GetPPSDBoxSize</a>(0)/2,
394 <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPPSDBoxSize">GetPPSDBoxSize</a>(1)/2,
395 <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPPSDBoxSize">GetPPSDBoxSize</a>(2)/2 );
397 <b> // Box containing one micromegas module </b>
399 new TBRIK( "PPSDModule", "PPSD module", "<a href="../ListOfTypes.html#void">void</a>", <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPPSDModuleSize">GetPPSDModuleSize</a>(0)/2,
400 <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPPSDModuleSize">GetPPSDModuleSize</a>(1)/2,
401 <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPPSDModuleSize">GetPPSDModuleSize</a>(2)/2 );
404 new TBRIK ( "TopLid", "Micromegas top lid", "<a href="../ListOfTypes.html#void">void</a>", <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPPSDModuleSize">GetPPSDModuleSize</a>(0)/2,
405 <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetLidThickness">GetLidThickness</a>()/2,
406 <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPPSDModuleSize">GetPPSDModuleSize</a>(2)/2 ) ;
407 <b> // composite panel (top and bottom)</b>
409 new TBRIK ( "TopPanel", "Composite top panel", "<a href="../ListOfTypes.html#void">void</a>", ( <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPPSDModuleSize">GetPPSDModuleSize</a>(0) - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetMicromegasWallThickness">GetMicromegasWallThickness</a>() )/2,
410 <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetCompositeThickness">GetCompositeThickness</a>()/2,
411 ( <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPPSDModuleSize">GetPPSDModuleSize</a>(2) - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetMicromegasWallThickness">GetMicromegasWallThickness</a>() )/2 ) ;
413 new TBRIK ( "BottomPanel", "Composite bottom panel", "<a href="../ListOfTypes.html#void">void</a>", ( <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPPSDModuleSize">GetPPSDModuleSize</a>(0) - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetMicromegasWallThickness">GetMicromegasWallThickness</a>() )/2,
414 <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetCompositeThickness">GetCompositeThickness</a>()/2,
415 ( <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPPSDModuleSize">GetPPSDModuleSize</a>(2) - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetMicromegasWallThickness">GetMicromegasWallThickness</a>() )/2 ) ;
416 <b> // gas gap (conversion and avalanche)</b>
418 new TBRIK ( "GasGap", "gas gap", "<a href="../ListOfTypes.html#void">void</a>", ( <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPPSDModuleSize">GetPPSDModuleSize</a>(0) - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetMicromegasWallThickness">GetMicromegasWallThickness</a>() )/2,
419 ( <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetConversionGap">GetConversionGap</a>() + <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetAvalancheGap">GetAvalancheGap</a>() )/2,
420 ( <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPPSDModuleSize">GetPPSDModuleSize</a>(2) - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetMicromegasWallThickness">GetMicromegasWallThickness</a>() )/2 ) ;
422 <b> // anode and cathode </b>
424 new TBRIK ( "Anode", "Anode", "<a href="../ListOfTypes.html#void">void</a>", ( <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPPSDModuleSize">GetPPSDModuleSize</a>(0) - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetMicromegasWallThickness">GetMicromegasWallThickness</a>() )/2,
425 <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetAnodeThickness">GetAnodeThickness</a>()/2,
426 ( <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPPSDModuleSize">GetPPSDModuleSize</a>(2) - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetMicromegasWallThickness">GetMicromegasWallThickness</a>() )/2 ) ;
428 new TBRIK ( "Cathode", "Cathode", "<a href="../ListOfTypes.html#void">void</a>", ( <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPPSDModuleSize">GetPPSDModuleSize</a>(0) - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetMicromegasWallThickness">GetMicromegasWallThickness</a>() )/2,
429 <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetCathodeThickness">GetCathodeThickness</a>()/2,
430 ( <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPPSDModuleSize">GetPPSDModuleSize</a>(2) - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetMicromegasWallThickness">GetMicromegasWallThickness</a>() )/2 ) ;
433 new TBRIK ( "PCBoard", "Printed Circuit", "<a href="../ListOfTypes.html#void">void</a>", ( <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPPSDModuleSize">GetPPSDModuleSize</a>(0) - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetMicromegasWallThickness">GetMicromegasWallThickness</a>() )/2,
434 <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPCThickness">GetPCThickness</a>()/2,
435 ( <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPPSDModuleSize">GetPPSDModuleSize</a>(2) - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetMicromegasWallThickness">GetMicromegasWallThickness</a>() )/2 ) ;
436 <b> // Gap between Lead and top micromegas</b>
438 new TBRIK ( "LeadToM", "Air Gap top", "<a href="../ListOfTypes.html#void">void</a>", <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPPSDBoxSize">GetPPSDBoxSize</a>(0)/2,
439 <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetMicro1ToLeadGap">GetMicro1ToLeadGap</a>()/2,
440 <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPPSDBoxSize">GetPPSDBoxSize</a>(2)/2 ) ;
442 <b>// Gap between Lead and bottom micromegas</b>
444 new TBRIK ( "MToLead", "Air Gap bottom", "<a href="../ListOfTypes.html#void">void</a>", <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPPSDBoxSize">GetPPSDBoxSize</a>(0)/2,
445 <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetLeadToMicro2Gap">GetLeadToMicro2Gap</a>()/2,
446 <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPPSDBoxSize">GetPPSDBoxSize</a>(2)/2 ) ;
447 <b> // Lead converter</b>
449 new TBRIK ( "Lead", "Lead converter", "<a href="../ListOfTypes.html#void">void</a>", <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPPSDBoxSize">GetPPSDBoxSize</a>(0)/2,
450 <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetLeadConverterThickness">GetLeadConverterThickness</a>()/2,
451 <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPPSDBoxSize">GetPPSDBoxSize</a>(2)/2 ) ;
453 <b> // position PPSD into ALICE</b>
455 <a href="../ListOfTypes.html#char">char</a> * nodename = new <a href="../ListOfTypes.html#char">char</a>[20] ;
456 <a href="../ListOfTypes.html#char">char</a> * rotname = new <a href="../ListOfTypes.html#char">char</a>[20] ;
458 <a href="../ListOfTypes.html#Float_t">Float_t</a> r = <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetIPtoTopLidDistance">GetIPtoTopLidDistance</a>() + <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPPSDBoxSize">GetPPSDBoxSize</a>(1) / 2.0 ;
459 <a href="../ListOfTypes.html#Int_t">Int_t</a> number = 988 ;
460 TNode * top = gAlice->GetGeometry()->GetNode("alice") ;
462 for( <a href="../ListOfTypes.html#Int_t">Int_t</a> i = 1; i <= <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetNModules">GetNModules</a>(); i++ ) { // the number of PHOS modules
463 <a href="../ListOfTypes.html#Float_t">Float_t</a> angle = <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPHOSAngle">GetPHOSAngle</a>(i) ;
464 sprintf(rotname, "%s%d", "rotg", number++) ;
465 new TRotMatrix(rotname, rotname, 90, angle, 90, 90 + angle, 0, 0);
467 sprintf(nodename, "%s%d", "Moduleg", i) ;
468 <a href="../ListOfTypes.html#Float_t">Float_t</a> x = r * TMath::Sin( angle / kRADDEG ) ;
469 <a href="../ListOfTypes.html#Float_t">Float_t</a> y = -r * TMath::Cos( angle / kRADDEG ) ;
470 TNode * ppsdboxnode = new TNode(nodename , nodename ,"PPSDBox", x, y, 0, rotname ) ;
471 ppsdboxnode->SetLineColor(kColorPPSD) ;
472 fNodes->Add(ppsdboxnode) ;
473 ppsdboxnode->cd() ;
474 <b> // inside the PPSD box: </b>
475 <b> // 1. fNumberOfModulesPhi x fNumberOfModulesZ top micromegas</b>
476 x = ( <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPPSDBoxSize">GetPPSDBoxSize</a>(0) - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPPSDModuleSize">GetPPSDModuleSize</a>(0) ) / 2. ;
477 for ( <a href="../ListOfTypes.html#Int_t">Int_t</a> iphi = 1; iphi <= <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetNumberOfModulesPhi">GetNumberOfModulesPhi</a>(); iphi++ ) { // the number of micromegas modules in phi per PHOS module
478 <a href="../ListOfTypes.html#Float_t">Float_t</a> z = ( <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPPSDBoxSize">GetPPSDBoxSize</a>(2) - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPPSDModuleSize">GetPPSDModuleSize</a>(2) ) / 2. ;
480 for ( <a href="../ListOfTypes.html#Int_t">Int_t</a> iz = 1; iz <= <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetNumberOfModulesZ">GetNumberOfModulesZ</a>(); iz++ ) { // the number of micromegas modules in z per PHOS module
481 y = ( <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPPSDBoxSize">GetPPSDBoxSize</a>(1) - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetMicromegas1Thickness">GetMicromegas1Thickness</a>() ) / 2. ;
482 sprintf(nodename, "%s%d%d%d", "Mic1", i, iphi, iz) ;
483 micro1node = new TNode(nodename, nodename, "PPSDModule", x, y, z) ;
484 micro1node->SetLineColor(kColorPPSD) ;
485 fNodes->Add(micro1node) ;
486 <b> // inside top micromegas</b>
487 micro1node->cd() ;
488 <b> // a. top lid</b>
489 y = ( <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetMicromegas1Thickness">GetMicromegas1Thickness</a>() - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetLidThickness">GetLidThickness</a>() ) / 2. ;
490 sprintf(nodename, "%s%d%d%d", "Lid", i, iphi, iz) ;
491 TNode * toplidnode = new TNode(nodename, nodename, "TopLid", 0, y, 0) ;
492 toplidnode->SetLineColor(kColorPPSD) ;
493 fNodes->Add(toplidnode) ;
494 <b> // b. composite panel</b>
495 y = y - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetLidThickness">GetLidThickness</a>() / 2. - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetCompositeThickness">GetCompositeThickness</a>() / 2. ;
496 sprintf(nodename, "%s%d%d%d", "CompU", i, iphi, iz) ;
497 TNode * compupnode = new TNode(nodename, nodename, "TopPanel", 0, y, 0) ;
498 compupnode->SetLineColor(kColorPPSD) ;
499 fNodes->Add(compupnode) ;
501 y = y - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetCompositeThickness">GetCompositeThickness</a>() / 2. - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetAnodeThickness">GetAnodeThickness</a>() / 2. ;
502 sprintf(nodename, "%s%d%d%d", "Ano", i, iphi, iz) ;
503 TNode * anodenode = new TNode(nodename, nodename, "Anode", 0, y, 0) ;
504 anodenode->SetLineColor(kColorPHOS) ;
505 fNodes->Add(anodenode) ;
507 y = y - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetAnodeThickness">GetAnodeThickness</a>() / 2. - ( <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetConversionGap">GetConversionGap</a>() + <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetAvalancheGap">GetAvalancheGap</a>() ) / 2. ;
508 sprintf(nodename, "%s%d%d%d", "GGap", i, iphi, iz) ;
509 TNode * ggapnode = new TNode(nodename, nodename, "GasGap", 0, y, 0) ;
510 ggapnode->SetLineColor(kColorGas) ;
511 fNodes->Add(ggapnode) ;
512 <b> // f. cathode</b>
513 y = y - ( <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetConversionGap">GetConversionGap</a>() + <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetAvalancheGap">GetAvalancheGap</a>() ) / 2. - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetCathodeThickness">GetCathodeThickness</a>() / 2. ;
514 sprintf(nodename, "%s%d%d%d", "Cathode", i, iphi, iz) ;
515 TNode * cathodenode = new TNode(nodename, nodename, "Cathode", 0, y, 0) ;
516 cathodenode->SetLineColor(kColorPHOS) ;
517 fNodes->Add(cathodenode) ;
518 <b> // g. printed circuit</b>
519 y = y - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetCathodeThickness">GetCathodeThickness</a>() / 2. - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPCThickness">GetPCThickness</a>() / 2. ;
520 sprintf(nodename, "%s%d%d%d", "PC", i, iphi, iz) ;
521 TNode * pcnode = new TNode(nodename, nodename, "PCBoard", 0, y, 0) ;
522 pcnode->SetLineColor(kColorPPSD) ;
523 fNodes->Add(pcnode) ;
524 <b> // h. composite panel</b>
525 y = y - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPCThickness">GetPCThickness</a>() / 2. - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetCompositeThickness">GetCompositeThickness</a>() / 2. ;
526 sprintf(nodename, "%s%d%d%d", "CompDown", i, iphi, iz) ;
527 TNode * compdownnode = new TNode(nodename, nodename, "BottomPanel", 0, y, 0) ;
528 compdownnode->SetLineColor(kColorPPSD) ;
529 fNodes->Add(compdownnode) ;
530 z = z - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPPSDModuleSize">GetPPSDModuleSize</a>(2) ;
531 ppsdboxnode->cd() ;
532 } // end of Z module loop
533 x = x - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPPSDModuleSize">GetPPSDModuleSize</a>(0) ;
534 ppsdboxnode->cd() ;
535 } // end of phi module loop
536 <b> // 2. air gap </b>
537 ppsdboxnode->cd() ;
538 y = ( <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPPSDBoxSize">GetPPSDBoxSize</a>(1) - 2 * <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetMicromegas1Thickness">GetMicromegas1Thickness</a>() - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetMicro1ToLeadGap">GetMicro1ToLeadGap</a>() ) / 2. ;
539 sprintf(nodename, "%s%d", "GapUp", i) ;
540 TNode * gapupnode = new TNode(nodename, nodename, "LeadToM", 0, y, 0) ;
541 gapupnode->SetLineColor(kColorAir) ;
542 fNodes->Add(gapupnode) ;
543 <b> // 3. lead converter</b>
544 y = y - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetMicro1ToLeadGap">GetMicro1ToLeadGap</a>() / 2. - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetLeadConverterThickness">GetLeadConverterThickness</a>() / 2. ;
545 sprintf(nodename, "%s%d", "LeadC", i) ;
546 TNode * leadcnode = new TNode(nodename, nodename, "Lead", 0, y, 0) ;
547 leadcnode->SetLineColor(kColorPPSD) ;
548 fNodes->Add(leadcnode) ;
549 <b> // 4. air gap</b>
550 y = y - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetLeadConverterThickness">GetLeadConverterThickness</a>() / 2. - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetLeadToMicro2Gap">GetLeadToMicro2Gap</a>() / 2. ;
551 sprintf(nodename, "%s%d", "GapDown", i) ;
552 TNode * gapdownnode = new TNode(nodename, nodename, "MToLead", 0, y, 0) ;
553 gapdownnode->SetLineColor(kColorAir) ;
554 fNodes->Add(gapdownnode) ;
555 <b> // 5. fNumberOfModulesPhi x fNumberOfModulesZ bottom micromegas</b>
556 x = ( <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPPSDBoxSize">GetPPSDBoxSize</a>(0) - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPPSDModuleSize">GetPPSDModuleSize</a>(0) ) / 2. - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPhiDisplacement">GetPhiDisplacement</a>() ;
557 for ( <a href="../ListOfTypes.html#Int_t">Int_t</a> iphi = 1; iphi <= <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetNumberOfModulesPhi">GetNumberOfModulesPhi</a>(); iphi++ ) {
558 <a href="../ListOfTypes.html#Float_t">Float_t</a> z = ( <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPPSDBoxSize">GetPPSDBoxSize</a>(2) - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPPSDModuleSize">GetPPSDModuleSize</a>(2) ) / 2. - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetZDisplacement">GetZDisplacement</a>() ;;
560 for ( <a href="../ListOfTypes.html#Int_t">Int_t</a> iz = 1; iz <= <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetNumberOfModulesZ">GetNumberOfModulesZ</a>(); iz++ ) {
561 y = - ( <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPPSDBoxSize">GetPPSDBoxSize</a>(1) - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetMicromegas2Thickness">GetMicromegas2Thickness</a>() ) / 2. ;
562 sprintf(nodename, "%s%d%d%d", "Mic2", i, iphi, iz) ;
563 micro2node = new TNode(nodename, nodename, "PPSDModule", x, y, z) ;
564 micro2node->SetLineColor(kColorPPSD) ;
565 fNodes->Add(micro2node) ;
566 <b> // inside bottom micromegas</b>
567 micro2node->cd() ;
568 <b> // a. top lid</b>
569 y = ( <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetMicromegas2Thickness">GetMicromegas2Thickness</a>() - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetLidThickness">GetLidThickness</a>() ) / 2. ;
570 sprintf(nodename, "%s%d", "Lidb", i) ;
571 TNode * toplidbnode = new TNode(nodename, nodename, "TopLid", 0, y, 0) ;
572 toplidbnode->SetLineColor(kColorPPSD) ;
573 fNodes->Add(toplidbnode) ;
574 <b> // b. composite panel</b>
575 y = y - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetLidThickness">GetLidThickness</a>() / 2. - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetCompositeThickness">GetCompositeThickness</a>() / 2. ;
576 sprintf(nodename, "%s%d", "CompUb", i) ;
577 TNode * compupbnode = new TNode(nodename, nodename, "TopPanel", 0, y, 0) ;
578 compupbnode->SetLineColor(kColorPPSD) ;
579 fNodes->Add(compupbnode) ;
581 y = y - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetCompositeThickness">GetCompositeThickness</a>() / 2. - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetAnodeThickness">GetAnodeThickness</a>() / 2. ;
582 sprintf(nodename, "%s%d", "Anob", i) ;
583 TNode * anodebnode = new TNode(nodename, nodename, "Anode", 0, y, 0) ;
584 anodebnode->SetLineColor(kColorPPSD) ;
585 fNodes->Add(anodebnode) ;
586 <b> // d. conversion gas</b>
587 y = y - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetAnodeThickness">GetAnodeThickness</a>() / 2. - ( <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetConversionGap">GetConversionGap</a>() + <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetAvalancheGap">GetAvalancheGap</a>() ) / 2. ;
588 sprintf(nodename, "%s%d", "GGapb", i) ;
589 TNode * ggapbnode = new TNode(nodename, nodename, "GasGap", 0, y, 0) ;
590 ggapbnode->SetLineColor(kColorGas) ;
591 fNodes->Add(ggapbnode) ;
592 <b> // f. cathode</b>
593 y = y - ( <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetConversionGap">GetConversionGap</a>() + <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetAvalancheGap">GetAvalancheGap</a>() ) / 2. - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetCathodeThickness">GetCathodeThickness</a>() / 2. ;
594 sprintf(nodename, "%s%d", "Cathodeb", i) ;
595 TNode * cathodebnode = new TNode(nodename, nodename, "Cathode", 0, y, 0) ;
596 cathodebnode->SetLineColor(kColorPPSD) ;
597 fNodes->Add(cathodebnode) ;
598 <b> // g. printed circuit</b>
599 y = y - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetCathodeThickness">GetCathodeThickness</a>() / 2. - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPCThickness">GetPCThickness</a>() / 2. ;
600 sprintf(nodename, "%s%d", "PCb", i) ;
601 TNode * pcbnode = new TNode(nodename, nodename, "PCBoard", 0, y, 0) ;
602 pcbnode->SetLineColor(kColorPPSD) ;
603 fNodes->Add(pcbnode) ;
604 <b> // h. composite pane</b>
605 y = y - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPCThickness">GetPCThickness</a>() / 2. - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetCompositeThickness">GetCompositeThickness</a>() / 2. ;
606 sprintf(nodename, "%s%d", "CompDownb", i) ;
607 TNode * compdownbnode = new TNode(nodename, nodename, "BottomPanel", 0, y, 0) ;
608 compdownbnode->SetLineColor(kColorPPSD) ;
609 fNodes->Add(compdownbnode) ;
610 z = z - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPPSDModuleSize">GetPPSDModuleSize</a>(2) ;
611 ppsdboxnode->cd() ;
612 } // end of Z module loop
613 x = x - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPPSDModuleSize">GetPPSDModuleSize</a>(0) ;
614 ppsdboxnode->cd() ;
615 } // end of phi module loop
621 <b>//____________________________________________________________________________</b>
622 <a name="AliPHOSv0:CreateGeometry"> </a><a href="../ListOfTypes.html#void">void</a> <a href=".././AliPHOSv0.html#AliPHOSv0:CreateGeometry">AliPHOSv0::CreateGeometry</a>()
624 <b> // Create the PHOS geometry for Geant</b>
626 <a href=".././AliPHOSv0.html">AliPHOSv0</a> *phostmp = (<a href=".././AliPHOSv0.html">AliPHOSv0</a>*)gAlice->GetModule("PHOS") ;
628 if ( phostmp == NULL ) {
630 fprintf(stderr, "PHOS detector not found!n") ;
634 <b> // Get pointer to the array containing media indeces</b>
635 <a href="../ListOfTypes.html#Int_t">Int_t</a> *idtmed = fIdtmed->GetArray() - 699 ;
637 <a href="../ListOfTypes.html#Float_t">Float_t</a> bigbox[3] ;
638 bigbox[0] = <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetOuterBoxSize">GetOuterBoxSize</a>(0) / 2.0 ;
639 bigbox[1] = ( <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetOuterBoxSize">GetOuterBoxSize</a>(1) + <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPPSDBoxSize">GetPPSDBoxSize</a>(1) ) / 2.0 ;
640 bigbox[2] = <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetOuterBoxSize">GetOuterBoxSize</a>(2) / 2.0 ;
642 gMC->Gsvolu("PHOS", "BOX ", idtmed[798], bigbox, 3) ;
644 this-><a href="#AliPHOSv0:CreateGeometryforPHOS">CreateGeometryforPHOS</a>() ;
645 if ( strcmp( <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>->GetName(), "GPS2") == 0 )
646 this-><a href="#AliPHOSv0:CreateGeometryforPPSD">CreateGeometryforPPSD</a>() ;
648 cout << "<a href=".././AliPHOSv0.html#AliPHOSv0:CreateGeometry">AliPHOSv0::CreateGeometry</a> : no charged particle identification system installed" << endl;
650 <b> // --- Position PHOS mdules in ALICE setup ---</b>
652 <a href="../ListOfTypes.html#Int_t">Int_t</a> idrotm[99] ;
653 <a href="../ListOfTypes.html#Double_t">Double_t</a> const kRADDEG = 180.0 / kPI ;
655 for( <a href="../ListOfTypes.html#Int_t">Int_t</a> i = 1; i <= <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetNModules">GetNModules</a>(); i++ ) {
657 <a href="../ListOfTypes.html#Float_t">Float_t</a> angle = <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPHOSAngle">GetPHOSAngle</a>(i) ;
658 AliMatrix(idrotm[i-1], 90.0, angle, 90.0, 90.0+angle, 0.0, 0.0) ;
660 <a href="../ListOfTypes.html#Float_t">Float_t</a> r = <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetIPtoOuterCoverDistance">GetIPtoOuterCoverDistance</a>() + ( <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetOuterBoxSize">GetOuterBoxSize</a>(1) + <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPPSDBoxSize">GetPPSDBoxSize</a>(1) ) / 2.0 ;
662 <a href="../ListOfTypes.html#Float_t">Float_t</a> xP1 = r * TMath::Sin( angle / kRADDEG ) ;
663 <a href="../ListOfTypes.html#Float_t">Float_t</a> yP1 = -r * TMath::Cos( angle / kRADDEG ) ;
665 gMC->Gspos("PHOS", i, "ALIC", xP1, yP1, 0.0, idrotm[i-1], "ONLY") ;
671 <b>//____________________________________________________________________________</b>
672 <a name="AliPHOSv0:CreateGeometryforPHOS"> </a><a href="../ListOfTypes.html#void">void</a> <a href=".././AliPHOSv0.html#AliPHOSv0:CreateGeometryforPHOS">AliPHOSv0::CreateGeometryforPHOS</a>()
674 <b> // Create the PHOS-EMC geometry for GEANT</b>
678 Geant3 geometry tree of PHOS-EMC in ALICE
681 <IMG Align=BOTTOM ALT="EMC geant tree" SRC="../images/EMCinAlice.gif">
686 <b> // Get pointer to the array containing media indexes</b>
687 <a href="../ListOfTypes.html#Int_t">Int_t</a> *idtmed = fIdtmed->GetArray() - 699 ;
690 <b> // --- Define PHOS box volume, fPUFPill with thermo insulating foam ---</b>
691 <b> // --- Foam Thermo Insulating outer cover dimensions ---</b>
692 <b> // --- Put it in bigbox = PHOS</b>
694 <a href="../ListOfTypes.html#Float_t">Float_t</a> dphos[3] ;
695 dphos[0] = <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetOuterBoxSize">GetOuterBoxSize</a>(0) / 2.0 ;
696 dphos[1] = <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetOuterBoxSize">GetOuterBoxSize</a>(1) / 2.0 ;
697 dphos[2] = <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetOuterBoxSize">GetOuterBoxSize</a>(2) / 2.0 ;
699 gMC->Gsvolu("EMCA", "BOX ", idtmed[706], dphos, 3) ;
701 <a href="../ListOfTypes.html#Float_t">Float_t</a> yO = - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPPSDBoxSize">GetPPSDBoxSize</a>(1) / 2.0 ;
703 gMC->Gspos("EMCA", 1, "PHOS", 0.0, yO, 0.0, 0, "ONLY") ;
706 <b> // --- Define Textolit Wall box, position inside EMCA ---</b>
707 <b> // --- Textolit Wall box dimentions ---</b>
710 <a href="../ListOfTypes.html#Float_t">Float_t</a> dptxw[3];
711 dptxw[0] = <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetTextolitBoxSize">GetTextolitBoxSize</a>(0) / 2.0 ;
712 dptxw[1] = <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetTextolitBoxSize">GetTextolitBoxSize</a>(1) / 2.0 ;
713 dptxw[2] = <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetTextolitBoxSize">GetTextolitBoxSize</a>(2) / 2.0 ;
715 gMC->Gsvolu("PTXW", "BOX ", idtmed[707], dptxw, 3);
717 yO = ( <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetOuterBoxThickness">GetOuterBoxThickness</a>(1) - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetUpperPlateThickness">GetUpperPlateThickness</a>() ) / 2. ;
719 gMC->Gspos("PTXW", 1, "EMCA", 0.0, yO, 0.0, 0, "ONLY") ;
722 <b> // --- Define Upper Polystyrene Foam Plate, place inside PTXW ---</b>
723 <b> // --- immediately below Foam Thermo Insulation Upper plate ---</b>
725 <b> // --- Upper Polystyrene Foam plate thickness ---</b>
727 <a href="../ListOfTypes.html#Float_t">Float_t</a> dpufp[3] ;
728 dpufp[0] = <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetTextolitBoxSize">GetTextolitBoxSize</a>(0) / 2.0 ;
729 dpufp[1] = <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetSecondUpperPlateThickness">GetSecondUpperPlateThickness</a>() / 2. ;
730 dpufp[2] = <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetTextolitBoxSize">GetTextolitBoxSize</a>(2) /2.0 ;
732 gMC->Gsvolu("PUFP", "BOX ", idtmed[703], dpufp, 3) ;
734 yO = ( <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetTextolitBoxSize">GetTextolitBoxSize</a>(1) - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetSecondUpperPlateThickness">GetSecondUpperPlateThickness</a>() ) / 2.0 ;
736 gMC->Gspos("PUFP", 1, "PTXW", 0.0, yO, 0.0, 0, "ONLY") ;
739 <b> // --- Define air-filled box, place inside PTXW ---</b>
740 <b> // --- Inner AIR volume dimensions ---</b>
743 <a href="../ListOfTypes.html#Float_t">Float_t</a> dpair[3] ;
744 dpair[0] = <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetAirFilledBoxSize">GetAirFilledBoxSize</a>(0) / 2.0 ;
745 dpair[1] = <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetAirFilledBoxSize">GetAirFilledBoxSize</a>(1) / 2.0 ;
746 dpair[2] = <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetAirFilledBoxSize">GetAirFilledBoxSize</a>(2) / 2.0 ;
748 gMC->Gsvolu("PAIR", "BOX ", idtmed[798], dpair, 3) ;
750 yO = ( <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetTextolitBoxSize">GetTextolitBoxSize</a>(1) - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetAirFilledBoxSize">GetAirFilledBoxSize</a>(1) ) / 2.0 - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetSecondUpperPlateThickness">GetSecondUpperPlateThickness</a>() ;
752 gMC->Gspos("PAIR", 1, "PTXW", 0.0, yO, 0.0, 0, "ONLY") ;
754 <b>// --- Dimensions of PbWO4 crystal ---</b>
756 <a href="../ListOfTypes.html#Float_t">Float_t</a> xtlX = <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetCrystalSize">GetCrystalSize</a>(0) ;
757 <a href="../ListOfTypes.html#Float_t">Float_t</a> xtlY = <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetCrystalSize">GetCrystalSize</a>(1) ;
758 <a href="../ListOfTypes.html#Float_t">Float_t</a> xtlZ = <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetCrystalSize">GetCrystalSize</a>(2) ;
760 <a href="../ListOfTypes.html#Float_t">Float_t</a> dptcb[3] ;
761 dptcb[0] = <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetNPhi">GetNPhi</a>() * ( xtlX + 2 * <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetGapBetweenCrystals">GetGapBetweenCrystals</a>() ) / 2.0 + <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetModuleBoxThickness">GetModuleBoxThickness</a>() ;
762 dptcb[1] = ( xtlY + <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetCrystalSupportHeight">GetCrystalSupportHeight</a>() + <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetCrystalWrapThickness">GetCrystalWrapThickness</a>() + <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetCrystalHolderThickness">GetCrystalHolderThickness</a>() ) / 2.0
763 + <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetModuleBoxThickness">GetModuleBoxThickness</a>() / 2.0 ;
764 dptcb[2] = <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetNZ">GetNZ</a>() * ( xtlZ + 2 * <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetGapBetweenCrystals">GetGapBetweenCrystals</a>() ) / 2.0 + <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetModuleBoxThickness">GetModuleBoxThickness</a>() ;
766 gMC->Gsvolu("PTCB", "BOX ", idtmed[706], dptcb, 3) ;
768 yO = <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetAirFilledBoxSize">GetAirFilledBoxSize</a>(1) / 2.0 - dptcb[1]
769 - ( <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetIPtoCrystalSurface">GetIPtoCrystalSurface</a>() - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetIPtoOuterCoverDistance">GetIPtoOuterCoverDistance</a>() - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetModuleBoxThickness">GetModuleBoxThickness</a>()
770 - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetUpperPlateThickness">GetUpperPlateThickness</a>() - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetSecondUpperPlateThickness">GetSecondUpperPlateThickness</a>() ) ;
772 gMC->Gspos("PTCB", 1, "PAIR", 0.0, yO, 0.0, 0, "ONLY") ;
775 <b> // --- Define Crystal BLock filled with air, position it inside PTCB ---</b>
776 <a href="../ListOfTypes.html#Float_t">Float_t</a> dpcbl[3] ;
778 dpcbl[0] = <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetNPhi">GetNPhi</a>() * ( xtlX + 2 * <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetGapBetweenCrystals">GetGapBetweenCrystals</a>() ) / 2.0 ;
779 dpcbl[1] = ( xtlY + <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetCrystalSupportHeight">GetCrystalSupportHeight</a>() + <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetCrystalWrapThickness">GetCrystalWrapThickness</a>() + <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetCrystalHolderThickness">GetCrystalHolderThickness</a>() ) / 2.0 ;
780 dpcbl[2] = <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetNZ">GetNZ</a>() * ( xtlZ + 2 * <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetGapBetweenCrystals">GetGapBetweenCrystals</a>() ) / 2.0 ;
782 gMC->Gsvolu("PCBL", "BOX ", idtmed[798], dpcbl, 3) ;
784 <b> // --- Divide PCBL in X (phi) and Z directions --</b>
785 gMC->Gsdvn("PROW", "PCBL", <a href="../ListOfTypes.html#Int_t">Int_t</a> (<a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetNPhi">GetNPhi</a>()), 1) ;
786 gMC->Gsdvn("PCEL", "PROW", <a href="../ListOfTypes.html#Int_t">Int_t</a> (<a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetNZ">GetNZ</a>()), 3) ;
788 yO = -<a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetModuleBoxThickness">GetModuleBoxThickness</a>() / 2.0 ;
790 gMC->Gspos("PCBL", 1, "PTCB", 0.0, yO, 0.0, 0, "ONLY") ;
793 <b> // --- Define STeel (actually, it's titanium) Cover volume, place inside PCEL</b>
794 <a href="../ListOfTypes.html#Float_t">Float_t</a> dpstc[3] ;
796 dpstc[0] = ( xtlX + 2 * <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetCrystalWrapThickness">GetCrystalWrapThickness</a>() ) / 2.0 ;
797 dpstc[1] = ( xtlY + <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetCrystalSupportHeight">GetCrystalSupportHeight</a>() + <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetCrystalWrapThickness">GetCrystalWrapThickness</a>() + <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetCrystalHolderThickness">GetCrystalHolderThickness</a>() ) / 2.0 ;
798 dpstc[2] = ( xtlZ + 2 * <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetCrystalWrapThickness">GetCrystalWrapThickness</a>() + 2 * <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetCrystalHolderThickness">GetCrystalHolderThickness</a>() ) / 2.0 ;
800 gMC->Gsvolu("PSTC", "BOX ", idtmed[704], dpstc, 3) ;
802 gMC->Gspos("PSTC", 1, "PCEL", 0.0, 0.0, 0.0, 0, "ONLY") ;
805 <b> // --- Define Tyvek volume, place inside PSTC ---</b>
806 <a href="../ListOfTypes.html#Float_t">Float_t</a> dppap[3] ;
808 dppap[0] = xtlX / 2.0 + <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetCrystalWrapThickness">GetCrystalWrapThickness</a>() ;
809 dppap[1] = ( xtlY + <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetCrystalSupportHeight">GetCrystalSupportHeight</a>() + <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetCrystalWrapThickness">GetCrystalWrapThickness</a>() ) / 2.0 ;
810 dppap[2] = xtlZ / 2.0 + <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetCrystalWrapThickness">GetCrystalWrapThickness</a>() ;
812 gMC->Gsvolu("PPAP", "BOX ", idtmed[702], dppap, 3) ;
814 yO = ( xtlY + <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetCrystalSupportHeight">GetCrystalSupportHeight</a>() + <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetCrystalWrapThickness">GetCrystalWrapThickness</a>() ) / 2.0
815 - ( xtlY + <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetCrystalSupportHeight">GetCrystalSupportHeight</a>() + <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetCrystalWrapThickness">GetCrystalWrapThickness</a>() + <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetCrystalHolderThickness">GetCrystalHolderThickness</a>() ) / 2.0 ;
817 gMC->Gspos("PPAP", 1, "PSTC", 0.0, yO, 0.0, 0, "ONLY") ;
820 <b> // --- Define PbWO4 crystal volume, place inside PPAP ---</b>
821 <a href="../ListOfTypes.html#Float_t">Float_t</a> dpxtl[3] ;
823 dpxtl[0] = xtlX / 2.0 ;
824 dpxtl[1] = xtlY / 2.0 ;
825 dpxtl[2] = xtlZ / 2.0 ;
827 gMC->Gsvolu("PXTL", "BOX ", idtmed[699], dpxtl, 3) ;
829 yO = ( xtlY + <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetCrystalSupportHeight">GetCrystalSupportHeight</a>() + <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetCrystalWrapThickness">GetCrystalWrapThickness</a>() ) / 2.0 - xtlY / 2.0 - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetCrystalWrapThickness">GetCrystalWrapThickness</a>() ;
831 gMC->Gspos("PXTL", 1, "PPAP", 0.0, yO, 0.0, 0, "ONLY") ;
834 <b> // --- Define crystal support volume, place inside PPAP ---</b>
835 <a href="../ListOfTypes.html#Float_t">Float_t</a> dpsup[3] ;
837 dpsup[0] = xtlX / 2.0 + <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetCrystalWrapThickness">GetCrystalWrapThickness</a>() ;
838 dpsup[1] = <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetCrystalSupportHeight">GetCrystalSupportHeight</a>() / 2.0 ;
839 dpsup[2] = xtlZ / 2.0 + <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetCrystalWrapThickness">GetCrystalWrapThickness</a>() ;
841 gMC->Gsvolu("PSUP", "BOX ", idtmed[798], dpsup, 3) ;
843 yO = <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetCrystalSupportHeight">GetCrystalSupportHeight</a>() / 2.0 - ( xtlY + <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetCrystalSupportHeight">GetCrystalSupportHeight</a>() + <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetCrystalWrapThickness">GetCrystalWrapThickness</a>() ) / 2.0 ;
845 gMC->Gspos("PSUP", 1, "PPAP", 0.0, yO, 0.0, 0, "ONLY") ;
848 <b> // --- Define PIN-diode volume and position it inside crystal support ---</b>
849 <b> // --- right behind PbWO4 crystal</b>
851 <b> // --- PIN-diode dimensions ---</b>
854 <a href="../ListOfTypes.html#Float_t">Float_t</a> dppin[3] ;
855 dppin[0] = <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPinDiodeSize">GetPinDiodeSize</a>(0) / 2.0 ;
856 dppin[1] = <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPinDiodeSize">GetPinDiodeSize</a>(1) / 2.0 ;
857 dppin[2] = <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPinDiodeSize">GetPinDiodeSize</a>(2) / 2.0 ;
859 gMC->Gsvolu("PPIN", "BOX ", idtmed[705], dppin, 3) ;
861 yO = <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetCrystalSupportHeight">GetCrystalSupportHeight</a>() / 2.0 - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPinDiodeSize">GetPinDiodeSize</a>(1) / 2.0 ;
863 gMC->Gspos("PPIN", 1, "PSUP", 0.0, yO, 0.0, 0, "ONLY") ;
866 <b> // --- Define Upper Cooling Panel, place it on top of PTCB ---</b>
867 <a href="../ListOfTypes.html#Float_t">Float_t</a> dpucp[3] ;
868 <b> // --- Upper Cooling Plate thickness ---</b>
870 dpucp[0] = dptcb[0] ;
871 dpucp[1] = <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetUpperCoolingPlateThickness">GetUpperCoolingPlateThickness</a>() ;
872 dpucp[2] = dptcb[2] ;
874 gMC->Gsvolu("PUCP", "BOX ", idtmed[701], dpucp,3) ;
876 yO = ( <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetAirFilledBoxSize">GetAirFilledBoxSize</a>(1) - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetUpperCoolingPlateThickness">GetUpperCoolingPlateThickness</a>() ) / 2.
877 - ( <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetIPtoCrystalSurface">GetIPtoCrystalSurface</a>() - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetIPtoOuterCoverDistance">GetIPtoOuterCoverDistance</a>() - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetModuleBoxThickness">GetModuleBoxThickness</a>()
878 - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetUpperPlateThickness">GetUpperPlateThickness</a>() - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetSecondUpperPlateThickness">GetSecondUpperPlateThickness</a>() - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetUpperCoolingPlateThickness">GetUpperCoolingPlateThickness</a>() ) ;
880 gMC->Gspos("PUCP", 1, "PAIR", 0.0, yO, 0.0, 0, "ONLY") ;
883 <b> // --- Define Al Support Plate, position it inside PAIR ---</b>
884 <b> // --- right beneath PTCB ---</b>
885 <b> // --- Al Support Plate thickness ---</b>
887 <a href="../ListOfTypes.html#Float_t">Float_t</a> dpasp[3] ;
888 dpasp[0] = <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetAirFilledBoxSize">GetAirFilledBoxSize</a>(0) / 2.0 ;
889 dpasp[1] = <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetSupportPlateThickness">GetSupportPlateThickness</a>() / 2.0 ;
890 dpasp[2] = <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetAirFilledBoxSize">GetAirFilledBoxSize</a>(2) / 2.0 ;
892 gMC->Gsvolu("PASP", "BOX ", idtmed[701], dpasp, 3) ;
894 yO = ( <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetAirFilledBoxSize">GetAirFilledBoxSize</a>(1) - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetSupportPlateThickness">GetSupportPlateThickness</a>() ) / 2.
895 - ( <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetIPtoCrystalSurface">GetIPtoCrystalSurface</a>() - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetIPtoOuterCoverDistance">GetIPtoOuterCoverDistance</a>()
896 - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetUpperPlateThickness">GetUpperPlateThickness</a>() - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetSecondUpperPlateThickness">GetSecondUpperPlateThickness</a>() + dpcbl[1] * 2 ) ;
898 gMC->Gspos("PASP", 1, "PAIR", 0.0, yO, 0.0, 0, "ONLY") ;
901 <b> // --- Define Thermo Insulating Plate, position it inside PAIR ---</b>
902 <b> // --- right beneath PASP ---</b>
903 <b> // --- Lower Thermo Insulating Plate thickness ---</b>
905 <a href="../ListOfTypes.html#Float_t">Float_t</a> dptip[3] ;
906 dptip[0] = <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetAirFilledBoxSize">GetAirFilledBoxSize</a>(0) / 2.0 ;
907 dptip[1] = <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetLowerThermoPlateThickness">GetLowerThermoPlateThickness</a>() / 2.0 ;
908 dptip[2] = <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetAirFilledBoxSize">GetAirFilledBoxSize</a>(2) / 2.0 ;
910 gMC->Gsvolu("PTIP", "BOX ", idtmed[706], dptip, 3) ;
912 yO = ( <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetAirFilledBoxSize">GetAirFilledBoxSize</a>(1) - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetLowerThermoPlateThickness">GetLowerThermoPlateThickness</a>() ) / 2.
913 - ( <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetIPtoCrystalSurface">GetIPtoCrystalSurface</a>() - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetIPtoOuterCoverDistance">GetIPtoOuterCoverDistance</a>() - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetUpperPlateThickness">GetUpperPlateThickness</a>()
914 - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetSecondUpperPlateThickness">GetSecondUpperPlateThickness</a>() + dpcbl[1] * 2 + <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetSupportPlateThickness">GetSupportPlateThickness</a>() ) ;
916 gMC->Gspos("PTIP", 1, "PAIR", 0.0, yO, 0.0, 0, "ONLY") ;
919 <b> // --- Define Textolit Plate, position it inside PAIR ---</b>
920 <b> // --- right beneath PTIP ---</b>
921 <b> // --- Lower Textolit Plate thickness ---</b>
923 <a href="../ListOfTypes.html#Float_t">Float_t</a> dptxp[3] ;
924 dptxp[0] = <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetAirFilledBoxSize">GetAirFilledBoxSize</a>(0) / 2.0 ;
925 dptxp[1] = <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetLowerTextolitPlateThickness">GetLowerTextolitPlateThickness</a>() / 2.0 ;
926 dptxp[2] = <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetAirFilledBoxSize">GetAirFilledBoxSize</a>(2) / 2.0 ;
928 gMC->Gsvolu("PTXP", "BOX ", idtmed[707], dptxp, 3) ;
930 yO = ( <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetAirFilledBoxSize">GetAirFilledBoxSize</a>(1) - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetLowerTextolitPlateThickness">GetLowerTextolitPlateThickness</a>() ) / 2.
931 - ( <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetIPtoCrystalSurface">GetIPtoCrystalSurface</a>() - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetIPtoOuterCoverDistance">GetIPtoOuterCoverDistance</a>() - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetUpperPlateThickness">GetUpperPlateThickness</a>()
932 - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetSecondUpperPlateThickness">GetSecondUpperPlateThickness</a>() + dpcbl[1] * 2 + <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetSupportPlateThickness">GetSupportPlateThickness</a>()
933 + <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetLowerThermoPlateThickness">GetLowerThermoPlateThickness</a>() ) ;
935 gMC->Gspos("PTXP", 1, "PAIR", 0.0, yO, 0.0, 0, "ONLY") ;
939 <b>//____________________________________________________________________________</b>
940 <a name="AliPHOSv0:CreateGeometryforPPSD"> </a><a href="../ListOfTypes.html#void">void</a> <a href=".././AliPHOSv0.html#AliPHOSv0:CreateGeometryforPPSD">AliPHOSv0::CreateGeometryforPPSD</a>()
942 <b> // Create the PHOS-PPSD geometry for GEANT</b>
947 Geant3 geometry tree of PHOS-PPSD in ALICE
950 <IMG Align=BOTTOM ALT="PPSD geant tree" SRC="../images/PPSDinAlice.gif">
955 <b> // Get pointer to the array containing media indexes</b>
956 <a href="../ListOfTypes.html#Int_t">Int_t</a> *idtmed = fIdtmed->GetArray() - 699 ;
958 <b> // The box containing all ppsd's for one PHOS module filled with air </b>
959 <a href="../ListOfTypes.html#Float_t">Float_t</a> ppsd[3] ;
960 ppsd[0] = <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPPSDBoxSize">GetPPSDBoxSize</a>(0) / 2.0 ;
961 ppsd[1] = <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPPSDBoxSize">GetPPSDBoxSize</a>(1) / 2.0 ;
962 ppsd[2] = <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPPSDBoxSize">GetPPSDBoxSize</a>(2) / 2.0 ;
964 gMC->Gsvolu("PPSD", "BOX ", idtmed[798], ppsd, 3) ;
966 <a href="../ListOfTypes.html#Float_t">Float_t</a> yO = <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetOuterBoxSize">GetOuterBoxSize</a>(1) / 2.0 ;
968 gMC->Gspos("PPSD", 1, "PHOS", 0.0, yO, 0.0, 0, "ONLY") ;
970 <b> // Now we build a micromegas module</b>
971 <b> // The box containing the whole module filled with epoxy (FR4)</b>
973 <a href="../ListOfTypes.html#Float_t">Float_t</a> mppsd[3] ;
974 mppsd[0] = <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPPSDModuleSize">GetPPSDModuleSize</a>(0) / 2.0 ;
975 mppsd[1] = <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPPSDModuleSize">GetPPSDModuleSize</a>(1) / 2.0 ;
976 mppsd[2] = <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPPSDModuleSize">GetPPSDModuleSize</a>(2) / 2.0 ;
978 gMC->Gsvolu("MPPS", "BOX ", idtmed[708], mppsd, 3) ;
980 <b> // Inside mppsd :</b>
981 <b> // 1. The Top Lid made of epoxy (FR4) </b>
983 <a href="../ListOfTypes.html#Float_t">Float_t</a> tlppsd[3] ;
984 tlppsd[0] = <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPPSDModuleSize">GetPPSDModuleSize</a>(0) / 2.0 ;
985 tlppsd[1] = <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetLidThickness">GetLidThickness</a>() / 2.0 ;
986 tlppsd[2] = <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPPSDModuleSize">GetPPSDModuleSize</a>(2) / 2.0 ;
988 gMC->Gsvolu("TLPS", "BOX ", idtmed[708], tlppsd, 3) ;
990 <a href="../ListOfTypes.html#Float_t">Float_t</a> y0 = ( <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetMicromegas1Thickness">GetMicromegas1Thickness</a>() - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetLidThickness">GetLidThickness</a>() ) / 2. ;
992 gMC->Gspos("TLPS", 1, "MPPS", 0.0, y0, 0.0, 0, "ONLY") ;
994 <b> // 2. the upper panel made of composite material</b>
996 <a href="../ListOfTypes.html#Float_t">Float_t</a> upppsd[3] ;
997 upppsd[0] = ( <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPPSDModuleSize">GetPPSDModuleSize</a>(0) - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetMicromegasWallThickness">GetMicromegasWallThickness</a>() ) / 2.0 ;
998 upppsd[1] = <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetCompositeThickness">GetCompositeThickness</a>() / 2.0 ;
999 upppsd[2] = ( <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPPSDModuleSize">GetPPSDModuleSize</a>(2) - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetMicromegasWallThickness">GetMicromegasWallThickness</a>() ) / 2.0 ;
1001 gMC->Gsvolu("UPPS", "BOX ", idtmed[709], upppsd, 3) ;
1003 y0 = y0 - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetLidThickness">GetLidThickness</a>() / 2. - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetCompositeThickness">GetCompositeThickness</a>() / 2. ;
1005 gMC->Gspos("UPPS", 1, "MPPS", 0.0, y0, 0.0, 0, "ONLY") ;
1007 <b> // 3. the anode made of Copper</b>
1009 <a href="../ListOfTypes.html#Float_t">Float_t</a> anppsd[3] ;
1010 anppsd[0] = ( <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPPSDModuleSize">GetPPSDModuleSize</a>(0) - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetMicromegasWallThickness">GetMicromegasWallThickness</a>() ) / 2.0 ;
1011 anppsd[1] = <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetAnodeThickness">GetAnodeThickness</a>() / 2.0 ;
1012 anppsd[2] = ( <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPPSDModuleSize">GetPPSDModuleSize</a>(2) - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetMicromegasWallThickness">GetMicromegasWallThickness</a>() ) / 2.0 ;
1014 gMC->Gsvolu("ANPS", "BOX ", idtmed[710], anppsd, 3) ;
1016 y0 = y0 - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetCompositeThickness">GetCompositeThickness</a>() / 2. - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetAnodeThickness">GetAnodeThickness</a>() / 2. ;
1018 gMC->Gspos("ANPS", 1, "MPPS", 0.0, y0, 0.0, 0, "ONLY") ;
1020 <b> // 4. the conversion gap + avalanche gap filled with gas</b>
1022 <a href="../ListOfTypes.html#Float_t">Float_t</a> ggppsd[3] ;
1023 ggppsd[0] = ( <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPPSDModuleSize">GetPPSDModuleSize</a>(0) - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetMicromegasWallThickness">GetMicromegasWallThickness</a>() ) / 2.0 ;
1024 ggppsd[1] = ( <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetConversionGap">GetConversionGap</a>() + <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetAvalancheGap">GetAvalancheGap</a>() ) / 2.0 ;
1025 ggppsd[2] = ( <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPPSDModuleSize">GetPPSDModuleSize</a>(2) - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetMicromegasWallThickness">GetMicromegasWallThickness</a>() ) / 2.0 ;
1027 gMC->Gsvolu("GGPS", "BOX ", idtmed[715], ggppsd, 3) ;
1029 <b> // --- Divide GGPP in X (phi) and Z directions --</b>
1030 gMC->Gsdvn("GROW", "GGPS", <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetNumberOfPadsPhi">GetNumberOfPadsPhi</a>(), 1) ;
1031 gMC->Gsdvn("GCEL", "GROW", <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetNumberOfPadsZ">GetNumberOfPadsZ</a>() , 3) ;
1033 y0 = y0 - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetAnodeThickness">GetAnodeThickness</a>() / 2. - ( <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetConversionGap">GetConversionGap</a>() + <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetAvalancheGap">GetAvalancheGap</a>() ) / 2. ;
1035 gMC->Gspos("GGPS", 1, "MPPS", 0.0, y0, 0.0, 0, "ONLY") ;
1038 <b> // 6. the cathode made of Copper</b>
1040 <a href="../ListOfTypes.html#Float_t">Float_t</a> cappsd[3] ;
1041 cappsd[0] = ( <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPPSDModuleSize">GetPPSDModuleSize</a>(0) - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetMicromegasWallThickness">GetMicromegasWallThickness</a>() ) / 2.0 ;
1042 cappsd[1] = <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetCathodeThickness">GetCathodeThickness</a>() / 2.0 ;
1043 cappsd[2] = ( <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPPSDModuleSize">GetPPSDModuleSize</a>(2) - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetMicromegasWallThickness">GetMicromegasWallThickness</a>() ) / 2.0 ;
1045 gMC->Gsvolu("CAPS", "BOX ", idtmed[710], cappsd, 3) ;
1047 y0 = y0 - ( <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetAvalancheGap">GetAvalancheGap</a>() + <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetAvalancheGap">GetAvalancheGap</a>() ) / 2. - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetCathodeThickness">GetCathodeThickness</a>() / 2. ;
1049 gMC->Gspos("CAPS", 1, "MPPS", 0.0, y0, 0.0, 0, "ONLY") ;
1051 <b> // 7. the printed circuit made of G10 </b>
1053 <a href="../ListOfTypes.html#Float_t">Float_t</a> pcppsd[3] ;
1054 pcppsd[0] = ( <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPPSDModuleSize">GetPPSDModuleSize</a>(0) - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetMicromegasWallThickness">GetMicromegasWallThickness</a>() ) / 2,.0 ;
1055 pcppsd[1] = <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPCThickness">GetPCThickness</a>() / 2.0 ;
1056 pcppsd[2] = ( <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPPSDModuleSize">GetPPSDModuleSize</a>(2) - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetMicromegasWallThickness">GetMicromegasWallThickness</a>() ) / 2.0 ;
1058 gMC->Gsvolu("PCPS", "BOX ", idtmed[711], cappsd, 3) ;
1060 y0 = y0 - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetCathodeThickness">GetCathodeThickness</a>() / 2. - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPCThickness">GetPCThickness</a>() / 2. ;
1062 gMC->Gspos("PCPS", 1, "MPPS", 0.0, y0, 0.0, 0, "ONLY") ;
1064 <b> // 8. the lower panel made of composite material</b>
1066 <a href="../ListOfTypes.html#Float_t">Float_t</a> lpppsd[3] ;
1067 lpppsd[0] = ( <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPPSDModuleSize">GetPPSDModuleSize</a>(0) - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetMicromegasWallThickness">GetMicromegasWallThickness</a>() ) / 2.0 ;
1068 lpppsd[1] = <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetCompositeThickness">GetCompositeThickness</a>() / 2.0 ;
1069 lpppsd[2] = ( <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPPSDModuleSize">GetPPSDModuleSize</a>(2) - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetMicromegasWallThickness">GetMicromegasWallThickness</a>() ) / 2.0 ;
1071 gMC->Gsvolu("LPPS", "BOX ", idtmed[709], lpppsd, 3) ;
1073 y0 = y0 - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPCThickness">GetPCThickness</a>() / 2. - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetCompositeThickness">GetCompositeThickness</a>() / 2. ;
1075 gMC->Gspos("LPPS", 1, "MPPS", 0.0, y0, 0.0, 0, "ONLY") ;
1077 <b> // Position the fNumberOfModulesPhi x fNumberOfModulesZ modules (mppsd) inside PPSD to cover a PHOS module</b>
1078 <b> // the top and bottom one's (which are assumed identical) :</b>
1080 <a href="../ListOfTypes.html#Float_t">Float_t</a> yt = ( <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPPSDBoxSize">GetPPSDBoxSize</a>(1) - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetMicromegas1Thickness">GetMicromegas1Thickness</a>() ) / 2. ;
1081 <a href="../ListOfTypes.html#Float_t">Float_t</a> yb = - ( <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPPSDBoxSize">GetPPSDBoxSize</a>(1) - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetMicromegas2Thickness">GetMicromegas2Thickness</a>() ) / 2. ;
1083 <a href="../ListOfTypes.html#Int_t">Int_t</a> copyNumbertop = 0 ;
1084 <a href="../ListOfTypes.html#Int_t">Int_t</a> copyNumberbot = <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetNumberOfModulesPhi">GetNumberOfModulesPhi</a>() * <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetNumberOfModulesZ">GetNumberOfModulesZ</a>() ;
1086 <a href="../ListOfTypes.html#Float_t">Float_t</a> x = ( <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPPSDBoxSize">GetPPSDBoxSize</a>(0) - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPPSDModuleSize">GetPPSDModuleSize</a>(0) ) / 2. ;
1088 for ( <a href="../ListOfTypes.html#Int_t">Int_t</a> iphi = 1; iphi <= <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetNumberOfModulesPhi">GetNumberOfModulesPhi</a>(); iphi++ ) { // the number of micromegas modules in phi per PHOS module
1089 <a href="../ListOfTypes.html#Float_t">Float_t</a> z = ( <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPPSDBoxSize">GetPPSDBoxSize</a>(2) - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPPSDModuleSize">GetPPSDModuleSize</a>(2) ) / 2. ;
1091 for ( <a href="../ListOfTypes.html#Int_t">Int_t</a> iz = 1; iz <= <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetNumberOfModulesZ">GetNumberOfModulesZ</a>(); iz++ ) { // the number of micromegas modules in z per PHOS module
1092 gMC->Gspos("MPPS", ++copyNumbertop, "PPSD", x, yt, z, 0, "ONLY") ;
1093 gMC->Gspos("MPPS", ++copyNumberbot, "PPSD", x, yb, z, 0, "ONLY") ;
1094 z = z - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPPSDModuleSize">GetPPSDModuleSize</a>(2) ;
1095 } // end of Z module loop
1096 x = x - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPPSDModuleSize">GetPPSDModuleSize</a>(0) ;
1097 } // end of phi module loop
1099 <b> // The Lead converter between two air gaps</b>
1100 <b> // 1. Upper air gap</b>
1102 <a href="../ListOfTypes.html#Float_t">Float_t</a> uappsd[3] ;
1103 uappsd[0] = <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPPSDBoxSize">GetPPSDBoxSize</a>(0) / 2.0 ;
1104 uappsd[1] = <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetMicro1ToLeadGap">GetMicro1ToLeadGap</a>() / 2.0 ;
1105 uappsd[2] = <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPPSDBoxSize">GetPPSDBoxSize</a>(2) / 2.0 ;
1107 gMC->Gsvolu("UAPPSD", "BOX ", idtmed[798], uappsd, 3) ;
1109 y0 = ( <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPPSDBoxSize">GetPPSDBoxSize</a>(1) - 2 * <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetMicromegas1Thickness">GetMicromegas1Thickness</a>() - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetMicro1ToLeadGap">GetMicro1ToLeadGap</a>() ) / 2. ;
1111 gMC->Gspos("UAPPSD", 1, "PPSD", 0.0, y0, 0.0, 0, "ONLY") ;
1113 <b> // 2. Lead converter</b>
1115 <a href="../ListOfTypes.html#Float_t">Float_t</a> lcppsd[3] ;
1116 lcppsd[0] = <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPPSDBoxSize">GetPPSDBoxSize</a>(0) / 2.0 ;
1117 lcppsd[1] = <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetLeadConverterThickness">GetLeadConverterThickness</a>() / 2.0 ;
1118 lcppsd[2] = <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPPSDBoxSize">GetPPSDBoxSize</a>(2) / 2.0 ;
1120 gMC->Gsvolu("LCPPSD", "BOX ", idtmed[712], lcppsd, 3) ;
1122 y0 = y0 - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetMicro1ToLeadGap">GetMicro1ToLeadGap</a>() / 2. - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetLeadConverterThickness">GetLeadConverterThickness</a>() / 2. ;
1124 gMC->Gspos("LCPPSD", 1, "PPSD", 0.0, y0, 0.0, 0, "ONLY") ;
1126 <b> // 3. Lower air gap</b>
1128 <a href="../ListOfTypes.html#Float_t">Float_t</a> lappsd[3] ;
1129 lappsd[0] = <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPPSDBoxSize">GetPPSDBoxSize</a>(0) / 2.0 ;
1130 lappsd[1] = <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetLeadToMicro2Gap">GetLeadToMicro2Gap</a>() / 2.0 ;
1131 lappsd[2] = <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetPPSDBoxSize">GetPPSDBoxSize</a>(2) / 2.0 ;
1133 gMC->Gsvolu("LAPPSD", "BOX ", idtmed[798], lappsd, 3) ;
1135 y0 = y0 - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetLeadConverterThickness">GetLeadConverterThickness</a>() / 2. - <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetLeadToMicro2Gap">GetLeadToMicro2Gap</a>() / 2. ;
1137 gMC->Gspos("LAPPSD", 1, "PPSD", 0.0, y0, 0.0, 0, "ONLY") ;
1141 <b>//___________________________________________________________________________</b>
1142 <a name="AliPHOSv0:Digitize"> </a><a href="../ListOfTypes.html#Int_t">Int_t</a> <a href=".././AliPHOSv0.html#AliPHOSv0:Digitize">AliPHOSv0::Digitize</a>(<a href="../ListOfTypes.html#Float_t">Float_t</a> Energy)
1144 <b> // Applies the energy calibration</b>
1146 <a href="../ListOfTypes.html#Float_t">Float_t</a> fB = 100000000. ;
1147 <a href="../ListOfTypes.html#Float_t">Float_t</a> fA = 0. ;
1148 <a href="../ListOfTypes.html#Int_t">Int_t</a> chan = <a href="../ListOfTypes.html#Int_t">Int_t</a>(fA + Energy*fB ) ;
1151 <b>//___________________________________________________________________________</b>
1152 <a name="AliPHOSv0:FinishEvent"> </a><a href="../ListOfTypes.html#void">void</a> <a href=".././AliPHOSv0.html#AliPHOSv0:FinishEvent">AliPHOSv0::FinishEvent</a>()
1154 <b> // Makes the digits from the sum of summed hit in a single crystal or PPSD gas cell</b>
1155 <b> // Adds to the energy the electronic noise</b>
1156 <b> // Keeps digits with energy above <a href=".././AliPHOSv0.html#AliPHOSv0:fDigitThreshold">fDigitThreshold</a></b>
1158 <a href="../ListOfTypes.html#Int_t">Int_t</a> i ;
1159 <a href="../ListOfTypes.html#Int_t">Int_t</a> relid[4];
1160 <a href="../ListOfTypes.html#Int_t">Int_t</a> j ;
1161 TClonesArray &lDigits = *fDigits ;
1162 <a href=".././AliPHOSHit.html">AliPHOSHit</a> * hit ;
1163 <a href=".././AliPHOSDigit.html">AliPHOSDigit</a> * newdigit ;
1164 <a href=".././AliPHOSDigit.html">AliPHOSDigit</a> * curdigit ;
1165 <a href="../ListOfTypes.html#Bool_t">Bool_t</a> deja = kFALSE ;
1167 for ( i = 0 ; i < <a href=".././AliPHOSv0.html#AliPHOSv0:fNTmpHits">fNTmpHits</a> ; i++ ) {
1168 hit = (<a href=".././AliPHOSHit.html">AliPHOSHit</a>*)<a href=".././AliPHOSv0.html#AliPHOSv0:fTmpHits">fTmpHits</a>->At(i) ;
1169 newdigit = new <a href=".././AliPHOSDigit.html">AliPHOSDigit</a>( hit->GetPrimary(), hit->GetId(), <a href="#AliPHOSv0:Digitize">Digitize</a>( hit->GetEnergy() ) ) ;
1171 for ( j = 0 ; j < fNdigits ; j++) {
1172 curdigit = (<a href=".././AliPHOSDigit.html">AliPHOSDigit</a>*) lDigits[j] ;
1173 if ( *curdigit == *newdigit) {
1174 *curdigit = *curdigit + *newdigit ;
1179 new(lDigits[fNdigits]) <a href=".././AliPHOSDigit.html">AliPHOSDigit</a>(* newdigit) ;
1186 <b> // Noise induced by the PIN diode of the PbWO crystals</b>
1188 <a href="../ListOfTypes.html#Float_t">Float_t</a> energyandnoise ;
1189 for ( i = 0 ; i < fNdigits ; i++ ) {
1190 newdigit = (<a href=".././AliPHOSDigit.html">AliPHOSDigit</a> * ) fDigits->At(i) ;
1191 <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:AbsToRelNumbering">AbsToRelNumbering</a>(newdigit->GetId(), relid) ;
1193 if (relid[1]==0){ // Digits belong to EMC (PbW0_4 crystals)
1194 energyandnoise = newdigit->GetAmp() + <a href="#AliPHOSv0:Digitize">Digitize</a>(gRandom->Gaus(0., <a href=".././AliPHOSv0.html#AliPHOSv0:fPinElectronicNoise">fPinElectronicNoise</a>)) ;
1196 if (energyandnoise < 0 )
1197 energyandnoise = 0 ;
1199 newdigit->SetAmp(energyandnoise) ;
1201 if ( newdigit->GetAmp() < <a href=".././AliPHOSv0.html#AliPHOSv0:fDigitThreshold">fDigitThreshold</a> ) // if threshold not surpassed, remove digit from list
1202 fDigits->RemoveAt(i) ;
1205 fDigits->Compress() ;
1206 <a href=".././AliPHOSv0.html#AliPHOSv0:fNTmpHits">fNTmpHits</a> = 0 ;
1207 <a href=".././AliPHOSv0.html#AliPHOSv0:fTmpHits">fTmpHits</a>->Delete();
1210 <b>//____________________________________________________________________________</b>
1211 <a name="AliPHOSv0:Init"> </a><a href="../ListOfTypes.html#void">void</a> <a href=".././AliPHOSv0.html#AliPHOSv0:Init">AliPHOSv0::Init</a>(<a href="../ListOfTypes.html#void">void</a>)
1213 <b> // Just prints an information message</b>
1215 <a href="../ListOfTypes.html#Int_t">Int_t</a> i;
1218 for(i=0;i<35;i++) printf("*");
1219 printf(" PHOS_INIT ");
1220 for(i=0;i<35;i++) printf("*");
1223 <b> // Here the PHOS initialisation code (if any!)</b>
1225 for(i=0;i<80;i++) printf("*");
1230 <b>//___________________________________________________________________________</b>
1231 <a name="AliPHOSv0:MakeBranch"> </a><a href="../ListOfTypes.html#void">void</a> <a href=".././AliPHOSv0.html#AliPHOSv0:MakeBranch">AliPHOSv0::MakeBranch</a>(<a href="../ListOfTypes.html#Option_t">Option_t</a>* opt)
1233 <b> // Create new branche in the current Root Tree in the digit Tree</b>
1235 AliDetector::<a href="#AliPHOSv0:MakeBranch">MakeBranch</a>(opt) ;
1237 <a href="../ListOfTypes.html#char">char</a> branchname[10];
1238 sprintf(branchname,"%s",GetName());
1239 <a href="../ListOfTypes.html#char">char</a> *cdD = strstr(opt,"D");
1241 if (fDigits && gAlice->TreeD() && cdD) {
1242 gAlice->TreeD()->Branch(branchname,&fDigits, fBufferSize);
1246 <b>//_____________________________________________________________________________</b>
1247 <a name="AliPHOSv0:Reconstruction"> </a><a href="../ListOfTypes.html#void">void</a> <a href=".././AliPHOSv0.html#AliPHOSv0:Reconstruction">AliPHOSv0::Reconstruction</a>(<a href=".././AliPHOSReconstructioner.html">AliPHOSReconstructioner</a> * Reconstructioner)
1249 <b> // 1. Reinitializes the existing RecPoint, TrackSegment, and RecParticles Lists and </b>
1250 <b> // 2. Creates a branch in TreeR for each list</b>
1251 <b> // 3. Steers the reconstruction processes</b>
1252 <b> // 4. Saves the 3 lists in TreeR</b>
1253 <b> // 5. Write the Tree to File</b>
1255 <a href=".././AliPHOSv0.html#AliPHOSv0:fReconstructioner">fReconstructioner</a> = Reconstructioner ;
1257 <a href="../ListOfTypes.html#char">char</a> branchname[10] ;
1261 if (<a href=".././AliPHOSv0.html#AliPHOSv0:fEmcClusters">fEmcClusters</a>) {
1262 <a href=".././AliPHOSv0.html#AliPHOSv0:fEmcClusters">fEmcClusters</a>->Delete() ;
1263 delete <a href=".././AliPHOSv0.html#AliPHOSv0:fEmcClusters">fEmcClusters</a> ;
1264 <a href=".././AliPHOSv0.html#AliPHOSv0:fEmcClusters">fEmcClusters</a> = 0 ;
1266 <a href=".././AliPHOSv0.html#AliPHOSv0:fEmcClusters">fEmcClusters</a>= new <a href="../ListOfTypes.html#RecPointsList">RecPointsList</a>("<a href=".././AliPHOSEmcRecPoint.html">AliPHOSEmcRecPoint</a>", 100) ;
1267 if ( <a href=".././AliPHOSv0.html#AliPHOSv0:fEmcClusters">fEmcClusters</a> && gAlice->TreeR() ) {
1268 sprintf(branchname,"%sERP",GetName()) ;
1269 gAlice->TreeR()->Branch(branchname, &<a href=".././AliPHOSv0.html#AliPHOSv0:fEmcClusters">fEmcClusters</a>, fBufferSize);
1272 if (<a href=".././AliPHOSv0.html#AliPHOSv0:fPpsdClusters">fPpsdClusters</a>) {
1273 <a href=".././AliPHOSv0.html#AliPHOSv0:fPpsdClusters">fPpsdClusters</a>->Delete() ;
1274 delete <a href=".././AliPHOSv0.html#AliPHOSv0:fPpsdClusters">fPpsdClusters</a> ;
1275 <a href=".././AliPHOSv0.html#AliPHOSv0:fPpsdClusters">fPpsdClusters</a> = 0 ;
1277 <a href=".././AliPHOSv0.html#AliPHOSv0:fPpsdClusters">fPpsdClusters</a> = new <a href="../ListOfTypes.html#RecPointsList">RecPointsList</a>("<a href=".././AliPHOSPpsdRecPoint.html">AliPHOSPpsdRecPoint</a>", 100) ;
1278 if ( <a href=".././AliPHOSv0.html#AliPHOSv0:fPpsdClusters">fPpsdClusters</a> && gAlice->TreeR() ) {
1279 sprintf(branchname,"%sPRP",GetName()) ;
1280 gAlice->TreeR()->Branch(branchname, &<a href=".././AliPHOSv0.html#AliPHOSv0:fPpsdClusters">fPpsdClusters</a>, fBufferSize);
1283 if (<a href=".././AliPHOSv0.html#AliPHOSv0:fTrackSegments">fTrackSegments</a>) {
1284 <a href=".././AliPHOSv0.html#AliPHOSv0:fTrackSegments">fTrackSegments</a>->Delete() ;
1285 delete <a href=".././AliPHOSv0.html#AliPHOSv0:fTrackSegments">fTrackSegments</a> ;
1286 <a href=".././AliPHOSv0.html#AliPHOSv0:fTrackSegments">fTrackSegments</a> = 0 ;
1288 <a href=".././AliPHOSv0.html#AliPHOSv0:fTrackSegments">fTrackSegments</a> = new <a href="../ListOfTypes.html#TrackSegmentsList">TrackSegmentsList</a>(100) ;
1289 <b>// if ( <a href=".././AliPHOSv0.html#AliPHOSv0:fTrackSegments">fTrackSegments</a> && gAlice->TreeR() ) { </b>
1290 <b>// sprintf(branchname,"%sTS",GetName()) ;</b>
1291 <b>// gAlice->TreeR()->Branch(branchname, &<a href=".././AliPHOSv0.html#AliPHOSv0:fTrackSegments">fTrackSegments</a>, fBufferSize);</b>
1294 if (<a href=".././AliPHOSv0.html#AliPHOSv0:fRecParticles">fRecParticles</a>) {
1295 <a href=".././AliPHOSv0.html#AliPHOSv0:fRecParticles">fRecParticles</a>->Delete() ;
1296 delete <a href=".././AliPHOSv0.html#AliPHOSv0:fRecParticles">fRecParticles</a> ;
1297 <a href=".././AliPHOSv0.html#AliPHOSv0:fRecParticles">fRecParticles</a> = 0 ;
1299 <a href=".././AliPHOSv0.html#AliPHOSv0:fRecParticles">fRecParticles</a> = new <a href="../ListOfTypes.html#RecParticlesList">RecParticlesList</a>("<a href=".././AliPHOSRecParticle.html">AliPHOSRecParticle</a>", 100) ;
1300 if ( <a href=".././AliPHOSv0.html#AliPHOSv0:fRecParticles">fRecParticles</a> && gAlice->TreeR() ) {
1301 sprintf(branchname,"%sRP",GetName()) ;
1302 gAlice->TreeR()->Branch(branchname, &<a href=".././AliPHOSv0.html#AliPHOSv0:fRecParticles">fRecParticles</a>, fBufferSize);
1307 <a href=".././AliPHOSv0.html#AliPHOSv0:fReconstructioner">fReconstructioner</a>-><a href=".././AliPHOSReconstructioner.html#AliPHOSReconstructioner:Make">Make</a>(fDigits, <a href=".././AliPHOSv0.html#AliPHOSv0:fEmcClusters">fEmcClusters</a>, <a href=".././AliPHOSv0.html#AliPHOSv0:fPpsdClusters">fPpsdClusters</a>, <a href=".././AliPHOSv0.html#AliPHOSv0:fTrackSegments">fTrackSegments</a>, <a href=".././AliPHOSv0.html#AliPHOSv0:fRecParticles">fRecParticles</a>);
1311 gAlice->TreeR()->Fill() ;
1315 gAlice->TreeR()->Write() ;
1319 <b>//____________________________________________________________________________</b>
1320 <a name="AliPHOSv0:StepManager"> </a><a href="../ListOfTypes.html#void">void</a> <a href=".././AliPHOSv0.html#AliPHOSv0:StepManager">AliPHOSv0::StepManager</a>(<a href="../ListOfTypes.html#void">void</a>)
1322 <b> // Accumulates hits as <a href="../ListOfTypes.html#long">long</a> as the track stays in a single crystal or PPSD gas Cell</b>
1324 <a href="../ListOfTypes.html#Int_t">Int_t</a> relid[4] ; // (box, layer, row, column) indices
1325 <a href="../ListOfTypes.html#Float_t">Float_t</a> xyze[4] ; // position wrt MRS and energy deposited
1326 TLorentzVector pos ;
1327 <a href="../ListOfTypes.html#Int_t">Int_t</a> copy ;
1329 <a href="../ListOfTypes.html#Int_t">Int_t</a> primary = gAlice->GetPrimary( gAlice->CurrentTrack() );
1330 TString name = <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>->GetName() ;
1331 if ( name == "GPS2" ) { // the CPV is a PPSD
1332 if( gMC->CurrentVolID(copy) == gMC->VolId("GCEL") ) // We are inside a gas cell
1334 gMC->TrackPosition(pos) ;
1338 xyze[3] = gMC->Edep() ;
1340 if ( xyze[3] != 0 ) { // there is deposited energy
1341 gMC->CurrentVolOffID(5, relid[0]) ; // get the PHOS Module number
1342 gMC->CurrentVolOffID(3, relid[1]) ; // get the Micromegas Module number
1343 <b> // 1-> Geom->GetNumberOfModulesPhi() * <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetNumberOfModulesZ">GetNumberOfModulesZ</a>() upper </b>
1344 <b> // > <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetNumberOfModulesPhi">GetNumberOfModulesPhi</a>() * <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetNumberOfModulesZ">GetNumberOfModulesZ</a>() lower</b>
1345 gMC->CurrentVolOffID(1, relid[2]) ; // get the row number of the cell
1346 gMC->CurrentVolID(relid[3]) ; // get the column number
1348 <b> // get the absolute Id number</b>
1350 <a href="../ListOfTypes.html#Int_t">Int_t</a> absid ;
1351 <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:RelToAbsNumbering">RelToAbsNumbering</a>(relid, absid) ;
1353 <b> // add current hit to the hit list </b>
1354 <a href="#AliPHOSv0:AddHit">AddHit</a>(primary, absid, xyze);
1356 } // there is deposited energy
1357 } // We are inside the gas of the CPV
1358 } // GPS2 configuration
1360 if(gMC->CurrentVolID(copy) == gMC->VolId("PXTL") ) // We are inside a PBWO crystal
1362 gMC->TrackPosition(pos) ;
1366 xyze[3] = gMC->Edep() ;
1368 if ( xyze[3] != 0 ) {
1369 gMC->CurrentVolOffID(10, relid[0]) ; // get the PHOS module number ;
1370 relid[1] = 0 ; // means PBW04
1371 gMC->CurrentVolOffID(4, relid[2]) ; // get the row number inside the module
1372 gMC->CurrentVolOffID(3, relid[3]) ; // get the cell number inside the module
1374 <b> // get the absolute Id number</b>
1376 <a href="../ListOfTypes.html#Int_t">Int_t</a> absid ;
1377 <a href=".././AliPHOSv0.html#AliPHOSv0:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:RelToAbsNumbering">RelToAbsNumbering</a>(relid, absid) ;
1379 <b> // add current hit to the hit list</b>
1381 <a href="#AliPHOSv0:AddHit">AddHit</a>(primary, absid, xyze);
1383 } // there is deposited energy
1384 } // we are inside a PHOS Xtal
1394 <a href="http://root.cern.ch/root/Welcome.html">ROOT page</a> - <a href="../ClassIndex.html">Class index</a> - <a href="#TopOfPage">Top of the page</a><br>
1396 <hr>This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to <a href="mailto:rootdev@root.cern.ch">ROOT support</a>, or contact <a href="mailto:rootdev@root.cern.ch">the developers</a> with any questions or problems regarding ROOT.