1 /**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
18 Revision 1.20 2002/02/13 16:58:37 cblume
19 Bug fix reported by Jiri. Make atoi input zero terminated in StepManager()
21 Revision 1.19 2002/02/11 14:25:27 cblume
22 Geometry update, compressed hit structure
24 Revision 1.18 2000/11/30 17:38:08 cblume
25 Changes to get in line with new STEER and EVGEN
27 Revision 1.17 2000/11/01 14:53:21 cblume
28 Merge with TRD-develop
30 Revision 1.14.2.3 2000/10/06 16:49:46 cblume
33 Revision 1.14.2.2 2000/10/04 16:34:58 cblume
34 Replace include files by forward declarations
36 Revision 1.14.2.1 2000/09/18 13:48:18 cblume
37 Adapt to new AliTRDhit
39 Revision 1.16 2000/06/08 18:32:58 cblume
40 Make code compliant to coding conventions
42 Revision 1.15 2000/06/07 16:25:37 cblume
43 Try to remove compiler warnings on Sun and HP
45 Revision 1.14 2000/02/28 19:10:26 cblume
46 Include the new TRD classes
48 Revision 1.13.4.1 2000/02/28 18:01:53 cblume
49 Change to new hit version and introduce geometry class
51 Revision 1.13 1999/11/05 22:50:28 fca
52 Do not use Atan, removed from ROOT too
54 Revision 1.12 1999/11/02 16:35:56 fca
55 New version of TRD introduced
57 Revision 1.11 1999/11/01 20:41:51 fca
58 Added protections against using the wrong version of FRAME
60 Revision 1.10 1999/09/29 09:24:35 fca
61 Introduction of the Copyright and cvs Log
65 ///////////////////////////////////////////////////////////////////////////////
67 // Transition Radiation Detector version 0 -- fast simulator //
71 <img src="picts/AliTRDfullClass.gif">
76 ///////////////////////////////////////////////////////////////////////////////
83 #include <TLorentzVector.h>
90 #include "AliTRDhit.h"
91 #include "AliTRDgeometry.h"
95 //_____________________________________________________________________________
96 AliTRDv0::AliTRDv0():AliTRD()
99 // AliTRDv0 default constructor
106 //_____________________________________________________________________________
107 AliTRDv0::AliTRDv0(const char *name, const char *title)
111 // Standard constructor for Transition Radiation Detector version 0
118 //_____________________________________________________________________________
119 AliTRDv0::~AliTRDv0()
122 // AliTRDv0 destructor
127 //_____________________________________________________________________________
128 void AliTRDv0::CreateGeometry()
131 // Create the GEANT geometry for the Transition Radiation Detector - Version 0
132 // This version covers the full azimuth.
135 // Check that FRAME is there otherwise we have no place where to put the TRD
136 AliModule* frame = gAlice->GetModule("FRAME");
139 // Define the chambers
140 AliTRD::CreateGeometry();
144 //_____________________________________________________________________________
145 void AliTRDv0::CreateMaterials()
148 // Create materials for the Transition Radiation Detector
151 AliTRD::CreateMaterials();
155 //_____________________________________________________________________________
156 void AliTRDv0::Init()
159 // Initialize Transition Radiation Detector after geometry is built
164 printf(" Fast simulator\n\n");
165 for (Int_t i = 0; i < 80; i++) printf("*");
170 //_____________________________________________________________________________
171 void AliTRDv0::StepManager()
174 // Procedure called at every step in the TRD
175 // Fast simulator. If switched on, a hit is produced when a track
176 // crosses the border between amplification region and pad plane.
188 // Use pad plane as sensitive volume
189 TString cIdSens = "L";
191 Char_t cIdChamber[3];
194 const Int_t kNplan = AliTRDgeometry::Nplan();
196 // Writing out hits enabled?
197 if (!(fHitsOn)) return;
199 // Use only charged tracks and count them only once per volume
200 if (gMC->TrackCharge() &&
201 gMC->IsTrackEntering()) {
203 // Check on sensitive volume
204 cIdCurrent = gMC->CurrentVolName();
205 if (cIdSens == cIdCurrent[1]) {
207 gMC->TrackPosition(p);
208 for (Int_t i = 0; i < 3; i++) hits[i] = p[i];
210 // The sector number (0 - 17)
211 // The numbering goes clockwise and starts at y = 0
212 Float_t phi = kRaddeg*TMath::ATan2(hits[0],hits[1]);
217 sec = ((Int_t) (phi / 20));
219 // The plane and chamber number
220 cIdChamber[0] = cIdCurrent[2];
221 cIdChamber[1] = cIdCurrent[3];
222 Int_t idChamber = atoi(cIdChamber);
223 cha = ((Int_t) idChamber / kNplan);
224 pla = ((Int_t) idChamber % kNplan);
225 det = fGeometry->GetDetector(pla,cha,sec);
227 AddHit(gAlice->CurrentTrack(),det,hits,0,kTRUE);