ROOT logo
/**************************************************************************
 * Copyright(c) 1998-1999, 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$ */

//-----------------------------------------------------------------------------
// MUON class for MonteCarlo Hits, inherited from AliHit for the 
// In addition to the ALiHit data member fX, fY, fZ and fTrack, AliMUONHit contains some info about the particle crossing the chamber:
// Impulsion: fPtot, fPx, fPy and fPz
// Reference position at the center of the chamber (wire plane) fXref, fYref and fZref
// Cumulated path along the active volume fTlength for spliting of hits for very inclined tracks 
// Energy loss of the particle inside the gas active volume.
// Incident fTheta and fPhi angle with respect of the wire plane of the chamber.
//-----------------------------------------------------------------------------

#include "AliMUONHit.h"
#include "AliMpDEManager.h"

#include "AliLog.h"

#include <Riostream.h>
#include <TMath.h>
#include <TString.h>

using std::endl;
using std::cout;
using std::setw;
using std::setprecision;
/// \cond CLASSIMP
ClassImp(AliMUONHit)
/// \endcond
 
//___________________________________________
AliMUONHit::AliMUONHit()
  : AliHit(), 
    fDetElemId(0),
    fParticle(0),
    fTheta(0),
    fPhi(0),
    fTlength(0),
    fEloss(0),
    fAge(0),
    fPHfirst(0),
    fPHlast(0),
    fPTot(0),
    fPx(0),
    fPy(0),
    fPz(0),
    fXref(0),
    fYref(0),
    fZref(0)
{
/// Default constructor
}

//___________________________________________
AliMUONHit::AliMUONHit(Int_t shunt, Int_t track, Int_t *vol, Float_t *hits)
  : AliHit(shunt, track),
    fDetElemId(vol[0]),
    fParticle(hits[0]),
    fTheta(hits[4]),
    fPhi(hits[5]),
    fTlength(hits[6]),
    fEloss(hits[7]),
    fAge(hits[14]),
    fPHfirst((Int_t)hits[8]),
    fPHlast((Int_t)hits[9]),
    fPTot(hits[10]),
    fPx(hits[11]),
    fPy(hits[12]),
    fPz(hits[13]),
    fXref(0),
    fYref(0),
    fZref(0)
{
/// Constructor
   
    fX         = hits[1];
    fY         = hits[2];
    fZ         = hits[3];
}

//___________________________________________
AliMUONHit::AliMUONHit(Int_t shunt, Int_t track, Int_t detElemId, Int_t idpart, 
		       Float_t x, Float_t y, Float_t z, Float_t tof, Float_t momentum, 
		       Float_t theta, Float_t phi, Float_t length, Float_t destep)
  : AliHit(shunt, track),
    fDetElemId(detElemId),
    fParticle(idpart),
    fTheta(theta),
    fPhi(phi),
    fTlength(length),
    fEloss(destep),
    fAge(tof),
    fPHfirst(0),
    fPHlast(0),
    fPTot(momentum),
    fPx(momentum * TMath::Sin(theta) * TMath::Cos(phi)),
    fPy(momentum * TMath::Sin(theta) * TMath::Sin(phi)),
    fPz(momentum * TMath::Cos(theta)),
    fXref(0),
    fYref(0),
    fZref(0)
{
/// Constructor
    fX         = x;
    fY         = y;
    fZ         = z;
}

//-----------------------------------------------------------------------------------------------
AliMUONHit::AliMUONHit(Int_t shunt, Int_t track, Int_t detElemId, Int_t idpart, 
		       Float_t x, Float_t y, Float_t z, Float_t tof, Float_t momentum, 
		       Float_t theta, Float_t phi, Float_t length, Float_t destep,
		       Float_t xref,Float_t yref,Float_t zref)
  : AliHit(shunt, track),
    fDetElemId(detElemId),
    fParticle(idpart),
    fTheta(theta),
    fPhi(phi),
    fTlength(length),
    fEloss(destep),
    fAge(tof),
    fPHfirst(0),
    fPHlast(0),
    fPTot(momentum),
    fPx(momentum * TMath::Sin(theta) * TMath::Cos(phi)),
    fPy(momentum * TMath::Sin(theta) * TMath::Sin(phi)),
    fPz(momentum * TMath::Cos(theta)),
    fXref(xref),
    fYref(yref),
    fZref(zref)
{
/// Constructor

    fX         = x;
    fY         = y;
    fZ         = z;
}

//-----------------------------------------------------------------------------------------------
AliMUONHit::~AliMUONHit()
{
/// Dectructor
}

//-----------------------------------------------------------------------------------------------
Int_t  AliMUONHit::Chamber()  const
{  
/// Return chamber ID

  return AliMpDEManager::GetChamberId(fDetElemId) + 1;  
}

//-----------------------------------------------------------------------------
const char*
AliMUONHit::GetName() const
{
/// Generate hit name

  return Form("%s-DE%04d",ClassName(),DetElemId());
}

//-----------------------------------------------------------------------------------------------
void AliMUONHit::Print(Option_t* opt) const
{
/// Printing hit information 
/// "full" option for printing all the information about the hit

  TString sopt(opt);
  sopt.ToUpper();
 
  if ( sopt.Contains("FULL") ) { 
    cout <<"<AliMUONHit>: Geant track="   << setw(4)  << Track() <<
      ", DetEle="        << setw(4)  << DetElemId() <<  
      ", (x,y,z)=(" << setw(7) << setprecision(5) << X() << "," << setw(7) << setprecision(5) << Y() <<  "," << setw(7) << setprecision(5) << Z() << 
      " )cm, Delta E=" << setw(8) << setprecision(3) << Eloss() << " GeV" << endl;
  }
  else {
    cout << "<AliMUONHit>: DetEle="        << setw(4)  << DetElemId() << 
      ", (x,y,z)=(" << setw(7) << setprecision(5) << X() << "," << setw(7) << setprecision(5) << Y() <<  "," << setw(7) << setprecision(5) << Z() << 
      " ) cm" <<endl;
  }
    
}
 AliMUONHit.cxx:1
 AliMUONHit.cxx:2
 AliMUONHit.cxx:3
 AliMUONHit.cxx:4
 AliMUONHit.cxx:5
 AliMUONHit.cxx:6
 AliMUONHit.cxx:7
 AliMUONHit.cxx:8
 AliMUONHit.cxx:9
 AliMUONHit.cxx:10
 AliMUONHit.cxx:11
 AliMUONHit.cxx:12
 AliMUONHit.cxx:13
 AliMUONHit.cxx:14
 AliMUONHit.cxx:15
 AliMUONHit.cxx:16
 AliMUONHit.cxx:17
 AliMUONHit.cxx:18
 AliMUONHit.cxx:19
 AliMUONHit.cxx:20
 AliMUONHit.cxx:21
 AliMUONHit.cxx:22
 AliMUONHit.cxx:23
 AliMUONHit.cxx:24
 AliMUONHit.cxx:25
 AliMUONHit.cxx:26
 AliMUONHit.cxx:27
 AliMUONHit.cxx:28
 AliMUONHit.cxx:29
 AliMUONHit.cxx:30
 AliMUONHit.cxx:31
 AliMUONHit.cxx:32
 AliMUONHit.cxx:33
 AliMUONHit.cxx:34
 AliMUONHit.cxx:35
 AliMUONHit.cxx:36
 AliMUONHit.cxx:37
 AliMUONHit.cxx:38
 AliMUONHit.cxx:39
 AliMUONHit.cxx:40
 AliMUONHit.cxx:41
 AliMUONHit.cxx:42
 AliMUONHit.cxx:43
 AliMUONHit.cxx:44
 AliMUONHit.cxx:45
 AliMUONHit.cxx:46
 AliMUONHit.cxx:47
 AliMUONHit.cxx:48
 AliMUONHit.cxx:49
 AliMUONHit.cxx:50
 AliMUONHit.cxx:51
 AliMUONHit.cxx:52
 AliMUONHit.cxx:53
 AliMUONHit.cxx:54
 AliMUONHit.cxx:55
 AliMUONHit.cxx:56
 AliMUONHit.cxx:57
 AliMUONHit.cxx:58
 AliMUONHit.cxx:59
 AliMUONHit.cxx:60
 AliMUONHit.cxx:61
 AliMUONHit.cxx:62
 AliMUONHit.cxx:63
 AliMUONHit.cxx:64
 AliMUONHit.cxx:65
 AliMUONHit.cxx:66
 AliMUONHit.cxx:67
 AliMUONHit.cxx:68
 AliMUONHit.cxx:69
 AliMUONHit.cxx:70
 AliMUONHit.cxx:71
 AliMUONHit.cxx:72
 AliMUONHit.cxx:73
 AliMUONHit.cxx:74
 AliMUONHit.cxx:75
 AliMUONHit.cxx:76
 AliMUONHit.cxx:77
 AliMUONHit.cxx:78
 AliMUONHit.cxx:79
 AliMUONHit.cxx:80
 AliMUONHit.cxx:81
 AliMUONHit.cxx:82
 AliMUONHit.cxx:83
 AliMUONHit.cxx:84
 AliMUONHit.cxx:85
 AliMUONHit.cxx:86
 AliMUONHit.cxx:87
 AliMUONHit.cxx:88
 AliMUONHit.cxx:89
 AliMUONHit.cxx:90
 AliMUONHit.cxx:91
 AliMUONHit.cxx:92
 AliMUONHit.cxx:93
 AliMUONHit.cxx:94
 AliMUONHit.cxx:95
 AliMUONHit.cxx:96
 AliMUONHit.cxx:97
 AliMUONHit.cxx:98
 AliMUONHit.cxx:99
 AliMUONHit.cxx:100
 AliMUONHit.cxx:101
 AliMUONHit.cxx:102
 AliMUONHit.cxx:103
 AliMUONHit.cxx:104
 AliMUONHit.cxx:105
 AliMUONHit.cxx:106
 AliMUONHit.cxx:107
 AliMUONHit.cxx:108
 AliMUONHit.cxx:109
 AliMUONHit.cxx:110
 AliMUONHit.cxx:111
 AliMUONHit.cxx:112
 AliMUONHit.cxx:113
 AliMUONHit.cxx:114
 AliMUONHit.cxx:115
 AliMUONHit.cxx:116
 AliMUONHit.cxx:117
 AliMUONHit.cxx:118
 AliMUONHit.cxx:119
 AliMUONHit.cxx:120
 AliMUONHit.cxx:121
 AliMUONHit.cxx:122
 AliMUONHit.cxx:123
 AliMUONHit.cxx:124
 AliMUONHit.cxx:125
 AliMUONHit.cxx:126
 AliMUONHit.cxx:127
 AliMUONHit.cxx:128
 AliMUONHit.cxx:129
 AliMUONHit.cxx:130
 AliMUONHit.cxx:131
 AliMUONHit.cxx:132
 AliMUONHit.cxx:133
 AliMUONHit.cxx:134
 AliMUONHit.cxx:135
 AliMUONHit.cxx:136
 AliMUONHit.cxx:137
 AliMUONHit.cxx:138
 AliMUONHit.cxx:139
 AliMUONHit.cxx:140
 AliMUONHit.cxx:141
 AliMUONHit.cxx:142
 AliMUONHit.cxx:143
 AliMUONHit.cxx:144
 AliMUONHit.cxx:145
 AliMUONHit.cxx:146
 AliMUONHit.cxx:147
 AliMUONHit.cxx:148
 AliMUONHit.cxx:149
 AliMUONHit.cxx:150
 AliMUONHit.cxx:151
 AliMUONHit.cxx:152
 AliMUONHit.cxx:153
 AliMUONHit.cxx:154
 AliMUONHit.cxx:155
 AliMUONHit.cxx:156
 AliMUONHit.cxx:157
 AliMUONHit.cxx:158
 AliMUONHit.cxx:159
 AliMUONHit.cxx:160
 AliMUONHit.cxx:161
 AliMUONHit.cxx:162
 AliMUONHit.cxx:163
 AliMUONHit.cxx:164
 AliMUONHit.cxx:165
 AliMUONHit.cxx:166
 AliMUONHit.cxx:167
 AliMUONHit.cxx:168
 AliMUONHit.cxx:169
 AliMUONHit.cxx:170
 AliMUONHit.cxx:171
 AliMUONHit.cxx:172
 AliMUONHit.cxx:173
 AliMUONHit.cxx:174
 AliMUONHit.cxx:175
 AliMUONHit.cxx:176
 AliMUONHit.cxx:177
 AliMUONHit.cxx:178
 AliMUONHit.cxx:179
 AliMUONHit.cxx:180
 AliMUONHit.cxx:181
 AliMUONHit.cxx:182
 AliMUONHit.cxx:183
 AliMUONHit.cxx:184
 AliMUONHit.cxx:185
 AliMUONHit.cxx:186
 AliMUONHit.cxx:187
 AliMUONHit.cxx:188
 AliMUONHit.cxx:189
 AliMUONHit.cxx:190
 AliMUONHit.cxx:191
 AliMUONHit.cxx:192
 AliMUONHit.cxx:193
 AliMUONHit.cxx:194
 AliMUONHit.cxx:195
 AliMUONHit.cxx:196
 AliMUONHit.cxx:197