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 // MUON class for MonteCarlo Hits, inherited from AliHit for the
19 // In addition to the ALiHit data member fX, fY, fZ and fTrack, AliMUONHit contains some info about the particle crossing the chamber:
20 // Impulsion: fPtot, fPx, fPy and fPz
21 // Reference position at the center of the chamber (wire plane) fXref, fYref and fZref
22 // Cumulated path along the active volume fTlength for spliting of hits for very inclined tracks
23 // Energy loss of the particle inside the gas active volume.
24 // Incident fTheta and fPhi angle with respect of the wire plane of the chamber.
27 #include "AliMUONHit.h"
28 #include "AliMpDEManager.h"
32 #include <Riostream.h>
40 //___________________________________________
41 AliMUONHit::AliMUONHit()
60 /// Default constructor
63 //___________________________________________
64 AliMUONHit::AliMUONHit(Int_t shunt, Int_t track, Int_t *vol, Float_t *hits)
65 : AliHit(shunt, track),
73 fPHfirst((Int_t)hits[8]),
74 fPHlast((Int_t)hits[9]),
90 //___________________________________________
91 AliMUONHit::AliMUONHit(Int_t shunt, Int_t track, Int_t detElemId, Int_t idpart,
92 Float_t X, Float_t Y, Float_t Z, Float_t tof, Float_t momentum,
93 Float_t theta, Float_t phi, Float_t length, Float_t destep)
94 : AliHit(shunt, track),
95 fDetElemId(detElemId),
105 fPx(momentum * TMath::Sin(theta) * TMath::Cos(phi)),
106 fPy(momentum * TMath::Sin(theta) * TMath::Sin(phi)),
107 fPz(momentum * TMath::Cos(theta)),
118 //-----------------------------------------------------------------------------------------------
119 AliMUONHit::AliMUONHit(Int_t shunt, Int_t track, Int_t detElemId, Int_t idpart,
120 Float_t X, Float_t Y, Float_t Z, Float_t tof, Float_t momentum,
121 Float_t theta, Float_t phi, Float_t length, Float_t destep,
122 Float_t Xref,Float_t Yref,Float_t Zref)
123 : AliHit(shunt, track),
124 fDetElemId(detElemId),
134 fPx(momentum * TMath::Sin(theta) * TMath::Cos(phi)),
135 fPy(momentum * TMath::Sin(theta) * TMath::Sin(phi)),
136 fPz(momentum * TMath::Cos(theta)),
148 //-----------------------------------------------------------------------------------------------
149 AliMUONHit::~AliMUONHit()
154 //-----------------------------------------------------------------------------------------------
155 Int_t AliMUONHit::Chamber() const
157 /// Return chamber ID
159 return AliMpDEManager::GetChamberId(fDetElemId) + 1;
162 //-----------------------------------------------------------------------------------------------
163 void AliMUONHit::Print(Option_t* opt) const
165 /// Printing hit information
166 /// "full" option for printing all the information about the hit
171 if ( sopt.Contains("FULL") ) {
172 cout <<"<AliMUONHit>: Geant track=" << setw(4) << Track() <<
173 ", DetEle=" << setw(4) << DetElemId() <<
174 ", (x,y,z)=(" << setw(7) << setprecision(5) << X() << "," << setw(7) << setprecision(5) << Y() << "," << setw(7) << setprecision(5) << Z() <<
175 " )cm, Delta E=" << setw(8) << setprecision(3) << Eloss() << " GeV" << endl;
178 cout << "<AliMUONHit>: DetEle=" << setw(4) << DetElemId() <<
179 ", (x,y,z)=(" << setw(7) << setprecision(5) << X() << "," << setw(7) << setprecision(5) << Y() << "," << setw(7) << setprecision(5) << Z() <<