ROOT logo
/**************************************************************************
 * Copyright(c) 2004, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/
/* $Id$ */
/** @file    AliFMDHit.cxx
    @author  Christian Holm Christensen <cholm@nbi.dk>
    @date    Mon Mar 27 12:41:58 2006
    @brief   Hit in the FMD
    @ingroup FMD_sim
*/
//____________________________________________________________________
//
//  Hits in the FMD 
//  Contains information on:
//	Position of hit
//	Momentum of track
//	PID of track
//	Energy loss of track
//	Track #
//	Track path length
//	Track stopping status. 
//  Latest changes by Christian Holm Christensen
//

#include "Riostream.h"		// ROOT_Riostream
#include <TDatabasePDG.h>
#include <TMath.h>
#include <TString.h>

#include "AliFMDHit.h"		// ALIFMDHIT_H
// #include "AliFMDDebug.h"		// ALIFMDDEBUG_H ALILOG_H

//____________________________________________________________________
using std::setw;
using std::cout;
using std::endl;
ClassImp(AliFMDHit)
#if 0
  ; // This is here to keep Emacs for indenting the next line
#endif


//____________________________________________________________________
AliFMDHit::AliFMDHit()
  : fDetector(0), 
    fRing(0), 
    fSector(0), 
    fStrip('\0'), 
    fPx(0),
    fPy(0),
    fPz(0),
    fPdg(0),
    fEdep(0), 
    fTime(0), 
    fLength(0), 
    fStop(0)
{
  // Default CTOR
  fX = fY = fZ = 0;
}
  

//____________________________________________________________________
AliFMDHit::AliFMDHit(Int_t    shunt, 
		     Int_t    track, 
		     UShort_t detector, 
		     Char_t   ring, 
		     UShort_t sector, 
		     UShort_t strip, 
		     Float_t  x, 
		     Float_t  y, 
		     Float_t  z,
		     Float_t  px, 
		     Float_t  py, 
		     Float_t  pz,
		     Float_t  edep,
		     Int_t    pdg,
		     Float_t  t, 
		     Float_t  l, 
		     Bool_t   stop)
  : AliHit(shunt, track),
    fDetector(detector), 
    fRing(ring), 
    fSector(sector), 
    fStrip(strip), 
    fPx(px),
    fPy(py),
    fPz(pz),
    fPdg(pdg),
    fEdep(edep), 
    fTime(t), 
    fLength(l), 
    fStop(stop)
{
  // Normal FMD hit ctor
  // 
  // Parameters:
  // 
  //    shunt     ???
  //    track	  Track #
  //    detector  Detector # (1, 2, or 3)                      
  //    ring	  Ring ID ('I' or 'O')
  //    sector	  Sector # (For inner/outer rings: 0-19/0-39)
  //    strip	  Strip # (For inner/outer rings: 0-511/0-255)
  //    x	  Track's X-coordinate at hit
  //    y	  Track's Y-coordinate at hit
  //    z	  Track's Z-coordinate at hit
  //    px	  X-component of track's momentum 
  //    py	  Y-component of track's momentum
  //    pz	  Z-component of track's momentum
  //    edep	  Energy deposited by track
  //    pdg	  Track's particle Id #
  //    t	  Time when the track hit 
  // 
  fX = x;
  fY = y;
  fZ = z;
}

//____________________________________________________________________
const char*
AliFMDHit::GetName() const 
{ 
  // Get the name 
  static TString n;
  n = Form("FMD%d%c[%2d,%3d]", fDetector,fRing,fSector,fStrip);
  return n.Data();
}

//____________________________________________________________________
const char*
AliFMDHit::GetTitle() const 
{ 
  // Get the title 
  static TString t;
  TDatabasePDG* pdgDB = TDatabasePDG::Instance();
  TParticlePDG* pdg   = pdgDB->GetParticle(fPdg);
  t = Form("%s (%d): %f MeV / %f cm", (pdg ? pdg->GetName() : "?"), 
	   fTrack, fEdep, fLength);
  return t.Data();
}

//____________________________________________________________________
Float_t
AliFMDHit::P() const 
{
  // Get the momentum of the particle of the particle that made this
  // hit. 
  return TMath::Sqrt(fPx * fPx + fPy * fPy + fPz * fPz);
}

//____________________________________________________________________
Float_t
AliFMDHit::M() const 
{
  // Get the mass of the particle that made this hit. 
  TDatabasePDG* pdgDB = TDatabasePDG::Instance();
  TParticlePDG* pdg   = pdgDB->GetParticle(fPdg);
  return (pdg ? pdg->Mass() : -1);
}

//____________________________________________________________________
Float_t
AliFMDHit::Q() const
{
  // Get the charge of the particle that made this hit. 
  TDatabasePDG* pdgDB = TDatabasePDG::Instance();
  TParticlePDG* pdg   = pdgDB->GetParticle(fPdg);
  return (pdg ? pdg->Charge() : 0);
}


//____________________________________________________________________
void
AliFMDHit::Print(Option_t* option) const 
{
  // Print Hit to standard out 
  cout << "AliFMDHit: FMD" 
       << fDetector << fRing << "[" 
       << setw(3) << fSector << ","
       << setw(3) << fStrip << "] = " 
       << fEdep << endl;
  TString opt(option);
  if (opt.Contains("D", TString::kIgnoreCase)) {
    TDatabasePDG* pdgDB = TDatabasePDG::Instance();
    TParticlePDG* pdg   = pdgDB->GetParticle(fPdg);
    cout << "\tPDG:\t" << fPdg << " " << (pdg ? pdg->GetName() : "?") << "\n"
	 << "\tP:\t(" << fPx << "," << fPy << "," << fPz << ") "<<P() << "\n" 
	 << "\tX:\t" << fX << "," << fY << "," << fZ << "\n" 
	 << "\tTrack #:\t" << fTrack << "\tLength:\t" 
	 << fLength << "cm\t" << (IsStop() ? "stopped" : "") << std::endl;
  }
}

//____________________________________________________________________
//
// EOF
//
 AliFMDHit.cxx:1
 AliFMDHit.cxx:2
 AliFMDHit.cxx:3
 AliFMDHit.cxx:4
 AliFMDHit.cxx:5
 AliFMDHit.cxx:6
 AliFMDHit.cxx:7
 AliFMDHit.cxx:8
 AliFMDHit.cxx:9
 AliFMDHit.cxx:10
 AliFMDHit.cxx:11
 AliFMDHit.cxx:12
 AliFMDHit.cxx:13
 AliFMDHit.cxx:14
 AliFMDHit.cxx:15
 AliFMDHit.cxx:16
 AliFMDHit.cxx:17
 AliFMDHit.cxx:18
 AliFMDHit.cxx:19
 AliFMDHit.cxx:20
 AliFMDHit.cxx:21
 AliFMDHit.cxx:22
 AliFMDHit.cxx:23
 AliFMDHit.cxx:24
 AliFMDHit.cxx:25
 AliFMDHit.cxx:26
 AliFMDHit.cxx:27
 AliFMDHit.cxx:28
 AliFMDHit.cxx:29
 AliFMDHit.cxx:30
 AliFMDHit.cxx:31
 AliFMDHit.cxx:32
 AliFMDHit.cxx:33
 AliFMDHit.cxx:34
 AliFMDHit.cxx:35
 AliFMDHit.cxx:36
 AliFMDHit.cxx:37
 AliFMDHit.cxx:38
 AliFMDHit.cxx:39
 AliFMDHit.cxx:40
 AliFMDHit.cxx:41
 AliFMDHit.cxx:42
 AliFMDHit.cxx:43
 AliFMDHit.cxx:44
 AliFMDHit.cxx:45
 AliFMDHit.cxx:46
 AliFMDHit.cxx:47
 AliFMDHit.cxx:48
 AliFMDHit.cxx:49
 AliFMDHit.cxx:50
 AliFMDHit.cxx:51
 AliFMDHit.cxx:52
 AliFMDHit.cxx:53
 AliFMDHit.cxx:54
 AliFMDHit.cxx:55
 AliFMDHit.cxx:56
 AliFMDHit.cxx:57
 AliFMDHit.cxx:58
 AliFMDHit.cxx:59
 AliFMDHit.cxx:60
 AliFMDHit.cxx:61
 AliFMDHit.cxx:62
 AliFMDHit.cxx:63
 AliFMDHit.cxx:64
 AliFMDHit.cxx:65
 AliFMDHit.cxx:66
 AliFMDHit.cxx:67
 AliFMDHit.cxx:68
 AliFMDHit.cxx:69
 AliFMDHit.cxx:70
 AliFMDHit.cxx:71
 AliFMDHit.cxx:72
 AliFMDHit.cxx:73
 AliFMDHit.cxx:74
 AliFMDHit.cxx:75
 AliFMDHit.cxx:76
 AliFMDHit.cxx:77
 AliFMDHit.cxx:78
 AliFMDHit.cxx:79
 AliFMDHit.cxx:80
 AliFMDHit.cxx:81
 AliFMDHit.cxx:82
 AliFMDHit.cxx:83
 AliFMDHit.cxx:84
 AliFMDHit.cxx:85
 AliFMDHit.cxx:86
 AliFMDHit.cxx:87
 AliFMDHit.cxx:88
 AliFMDHit.cxx:89
 AliFMDHit.cxx:90
 AliFMDHit.cxx:91
 AliFMDHit.cxx:92
 AliFMDHit.cxx:93
 AliFMDHit.cxx:94
 AliFMDHit.cxx:95
 AliFMDHit.cxx:96
 AliFMDHit.cxx:97
 AliFMDHit.cxx:98
 AliFMDHit.cxx:99
 AliFMDHit.cxx:100
 AliFMDHit.cxx:101
 AliFMDHit.cxx:102
 AliFMDHit.cxx:103
 AliFMDHit.cxx:104
 AliFMDHit.cxx:105
 AliFMDHit.cxx:106
 AliFMDHit.cxx:107
 AliFMDHit.cxx:108
 AliFMDHit.cxx:109
 AliFMDHit.cxx:110
 AliFMDHit.cxx:111
 AliFMDHit.cxx:112
 AliFMDHit.cxx:113
 AliFMDHit.cxx:114
 AliFMDHit.cxx:115
 AliFMDHit.cxx:116
 AliFMDHit.cxx:117
 AliFMDHit.cxx:118
 AliFMDHit.cxx:119
 AliFMDHit.cxx:120
 AliFMDHit.cxx:121
 AliFMDHit.cxx:122
 AliFMDHit.cxx:123
 AliFMDHit.cxx:124
 AliFMDHit.cxx:125
 AliFMDHit.cxx:126
 AliFMDHit.cxx:127
 AliFMDHit.cxx:128
 AliFMDHit.cxx:129
 AliFMDHit.cxx:130
 AliFMDHit.cxx:131
 AliFMDHit.cxx:132
 AliFMDHit.cxx:133
 AliFMDHit.cxx:134
 AliFMDHit.cxx:135
 AliFMDHit.cxx:136
 AliFMDHit.cxx:137
 AliFMDHit.cxx:138
 AliFMDHit.cxx:139
 AliFMDHit.cxx:140
 AliFMDHit.cxx:141
 AliFMDHit.cxx:142
 AliFMDHit.cxx:143
 AliFMDHit.cxx:144
 AliFMDHit.cxx:145
 AliFMDHit.cxx:146
 AliFMDHit.cxx:147
 AliFMDHit.cxx:148
 AliFMDHit.cxx:149
 AliFMDHit.cxx:150
 AliFMDHit.cxx:151
 AliFMDHit.cxx:152
 AliFMDHit.cxx:153
 AliFMDHit.cxx:154
 AliFMDHit.cxx:155
 AliFMDHit.cxx:156
 AliFMDHit.cxx:157
 AliFMDHit.cxx:158
 AliFMDHit.cxx:159
 AliFMDHit.cxx:160
 AliFMDHit.cxx:161
 AliFMDHit.cxx:162
 AliFMDHit.cxx:163
 AliFMDHit.cxx:164
 AliFMDHit.cxx:165
 AliFMDHit.cxx:166
 AliFMDHit.cxx:167
 AliFMDHit.cxx:168
 AliFMDHit.cxx:169
 AliFMDHit.cxx:170
 AliFMDHit.cxx:171
 AliFMDHit.cxx:172
 AliFMDHit.cxx:173
 AliFMDHit.cxx:174
 AliFMDHit.cxx:175
 AliFMDHit.cxx:176
 AliFMDHit.cxx:177
 AliFMDHit.cxx:178
 AliFMDHit.cxx:179
 AliFMDHit.cxx:180
 AliFMDHit.cxx:181
 AliFMDHit.cxx:182
 AliFMDHit.cxx:183
 AliFMDHit.cxx:184
 AliFMDHit.cxx:185
 AliFMDHit.cxx:186
 AliFMDHit.cxx:187
 AliFMDHit.cxx:188
 AliFMDHit.cxx:189
 AliFMDHit.cxx:190
 AliFMDHit.cxx:191
 AliFMDHit.cxx:192
 AliFMDHit.cxx:193
 AliFMDHit.cxx:194
 AliFMDHit.cxx:195
 AliFMDHit.cxx:196
 AliFMDHit.cxx:197
 AliFMDHit.cxx:198
 AliFMDHit.cxx:199
 AliFMDHit.cxx:200
 AliFMDHit.cxx:201
 AliFMDHit.cxx:202
 AliFMDHit.cxx:203
 AliFMDHit.cxx:204
 AliFMDHit.cxx:205
 AliFMDHit.cxx:206
 AliFMDHit.cxx:207
 AliFMDHit.cxx:208
 AliFMDHit.cxx:209