Bringing CMakeLists under svn maintenance
[u/mrichter/AliRoot.git] / FMD / AliFMDHit.cxx
CommitLineData
4347b38f 1/**************************************************************************
2 * Copyright(c) 2004, ALICE Experiment at CERN, All rights reserved. *
3 * *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
6 * *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
4347b38f 15/* $Id$ */
c2fc1258 16/** @file AliFMDHit.cxx
17 @author Christian Holm Christensen <cholm@nbi.dk>
18 @date Mon Mar 27 12:41:58 2006
19 @brief Hit in the FMD
02a27b50 20 @ingroup FMD_sim
c2fc1258 21*/
e802be3e 22//____________________________________________________________________
4347b38f 23//
24// Hits in the FMD
088f8e79 25// Contains information on:
26// Position of hit
27// Momentum of track
28// PID of track
29// Energy loss of track
30// Track #
31// Track path length
32// Track stopping status.
33// Latest changes by Christian Holm Christensen
4347b38f 34//
090026bf 35
e802be3e 36#include "Riostream.h" // ROOT_Riostream
54240c8d 37#include <TDatabasePDG.h>
090026bf 38#include <TMath.h>
54240c8d 39#include <TString.h>
4347b38f 40
090026bf 41#include "AliFMDHit.h" // ALIFMDHIT_H
f95a63c4 42// #include "AliFMDDebug.h" // ALIFMDDEBUG_H ALILOG_H
090026bf 43
4347b38f 44//____________________________________________________________________
cdd730d0 45using std::setw;
46using std::cout;
47using std::endl;
925e6570 48ClassImp(AliFMDHit)
1a1fdef7 49#if 0
50 ; // This is here to keep Emacs for indenting the next line
51#endif
4347b38f 52
53
54//____________________________________________________________________
55AliFMDHit::AliFMDHit()
56 : fDetector(0),
57 fRing(0),
58 fSector(0),
59 fStrip('\0'),
60 fPx(0),
61 fPy(0),
62 fPz(0),
63 fPdg(0),
64 fEdep(0),
088f8e79 65 fTime(0),
66 fLength(0),
67 fStop(0)
4347b38f 68{
088f8e79 69 // Default CTOR
4347b38f 70 fX = fY = fZ = 0;
71}
72
73
74//____________________________________________________________________
75AliFMDHit::AliFMDHit(Int_t shunt,
76 Int_t track,
77 UShort_t detector,
78 Char_t ring,
79 UShort_t sector,
80 UShort_t strip,
81 Float_t x,
82 Float_t y,
83 Float_t z,
84 Float_t px,
85 Float_t py,
86 Float_t pz,
87 Float_t edep,
88 Int_t pdg,
088f8e79 89 Float_t t,
90 Float_t l,
91 Bool_t stop)
4347b38f 92 : AliHit(shunt, track),
93 fDetector(detector),
94 fRing(ring),
95 fSector(sector),
96 fStrip(strip),
97 fPx(px),
98 fPy(py),
99 fPz(pz),
100 fPdg(pdg),
101 fEdep(edep),
088f8e79 102 fTime(t),
103 fLength(l),
104 fStop(stop)
4347b38f 105{
106 // Normal FMD hit ctor
107 //
108 // Parameters:
109 //
110 // shunt ???
111 // track Track #
112 // detector Detector # (1, 2, or 3)
113 // ring Ring ID ('I' or 'O')
114 // sector Sector # (For inner/outer rings: 0-19/0-39)
115 // strip Strip # (For inner/outer rings: 0-511/0-255)
116 // x Track's X-coordinate at hit
117 // y Track's Y-coordinate at hit
118 // z Track's Z-coordinate at hit
119 // px X-component of track's momentum
120 // py Y-component of track's momentum
121 // pz Z-component of track's momentum
122 // edep Energy deposited by track
123 // pdg Track's particle Id #
124 // t Time when the track hit
125 //
126 fX = x;
127 fY = y;
128 fZ = z;
129}
130
131//____________________________________________________________________
bf000c32 132const char*
133AliFMDHit::GetName() const
134{
02a27b50 135 // Get the name
bf000c32 136 static TString n;
137 n = Form("FMD%d%c[%2d,%3d]", fDetector,fRing,fSector,fStrip);
138 return n.Data();
139}
140
141//____________________________________________________________________
142const char*
143AliFMDHit::GetTitle() const
144{
02a27b50 145 // Get the title
bf000c32 146 static TString t;
147 TDatabasePDG* pdgDB = TDatabasePDG::Instance();
148 TParticlePDG* pdg = pdgDB->GetParticle(fPdg);
149 t = Form("%s (%d): %f MeV / %f cm", (pdg ? pdg->GetName() : "?"),
150 fTrack, fEdep, fLength);
151 return t.Data();
152}
153
154//____________________________________________________________________
54240c8d 155Float_t
156AliFMDHit::P() const
157{
158 // Get the momentum of the particle of the particle that made this
159 // hit.
160 return TMath::Sqrt(fPx * fPx + fPy * fPy + fPz * fPz);
161}
162
163//____________________________________________________________________
164Float_t
165AliFMDHit::M() const
166{
167 // Get the mass of the particle that made this hit.
168 TDatabasePDG* pdgDB = TDatabasePDG::Instance();
169 TParticlePDG* pdg = pdgDB->GetParticle(fPdg);
170 return (pdg ? pdg->Mass() : -1);
171}
172
173//____________________________________________________________________
174Float_t
175AliFMDHit::Q() const
176{
177 // Get the charge of the particle that made this hit.
178 TDatabasePDG* pdgDB = TDatabasePDG::Instance();
179 TParticlePDG* pdg = pdgDB->GetParticle(fPdg);
180 return (pdg ? pdg->Charge() : 0);
181}
182
183
184//____________________________________________________________________
4347b38f 185void
54240c8d 186AliFMDHit::Print(Option_t* option) const
4347b38f 187{
188 // Print Hit to standard out
7c09877a 189 cout << "AliFMDHit: FMD"
190 << fDetector << fRing << "["
191 << setw(3) << fSector << ","
192 << setw(3) << fStrip << "] = "
193 << fEdep << endl;
54240c8d 194 TString opt(option);
195 if (opt.Contains("D", TString::kIgnoreCase)) {
196 TDatabasePDG* pdgDB = TDatabasePDG::Instance();
197 TParticlePDG* pdg = pdgDB->GetParticle(fPdg);
198 cout << "\tPDG:\t" << fPdg << " " << (pdg ? pdg->GetName() : "?") << "\n"
199 << "\tP:\t(" << fPx << "," << fPy << "," << fPz << ") "<<P() << "\n"
200 << "\tX:\t" << fX << "," << fY << "," << fZ << "\n"
088f8e79 201 << "\tTrack #:\t" << fTrack << "\tLength:\t"
202 << fLength << "cm\t" << (IsStop() ? "stopped" : "") << std::endl;
54240c8d 203 }
4347b38f 204}
205
206//____________________________________________________________________
207//
208// EOF
209//