]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/AliMUONHit.cxx
Adding fDetElemId data member and its setter/getter,
[u/mrichter/AliRoot.git] / MUON / AliMUONHit.cxx
index d59ea595806abbc87350fc0424d3f58802bc9268..4af6c0173fcb4574f9da5cb5cb218559508a19e0 100644 (file)
 
 /* $Id$ */
 
+// MUON classe 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 <TMath.h>
+
 #include "AliMUONHit.h"
+#include "AliMUONGeometryDEIndexing.h"
+#include "AliLog.h"
 
 ClassImp(AliMUONHit)
  
+//___________________________________________
+AliMUONHit::AliMUONHit()
+  : AliHit() 
+{
+// Default constructor
+}
+
 //___________________________________________
 AliMUONHit::AliMUONHit(Int_t shunt, Int_t track, Int_t *vol, Float_t *hits):
        AliHit(shunt, track)
 {
 // Constructor
-    fChamber   = vol[0];
+// TBR
+   
+    fIsDetElemId = kFALSE;
+    fDetElemId = vol[0];
     fParticle  = hits[0];
     fX         = hits[1];
     fY         = hits[2];
@@ -40,13 +63,51 @@ AliMUONHit::AliMUONHit(Int_t shunt, Int_t track, Int_t *vol, Float_t *hits):
     fPy        = hits[12];
     fPz        = hits[13];
     fAge       = hits[14];
+    fXref      = 0.;
+    fYref      = 0.;
+    fZref      = 0.;
 }
+
 //___________________________________________
-AliMUONHit::AliMUONHit(Int_t shunt, Int_t track, Int_t iChamber, 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):
+AliMUONHit::AliMUONHit(Int_t shunt, Int_t track, Int_t *vol, Float_t *hits, 
+                       Bool_t /*isDetElemId*/) :
        AliHit(shunt, track)
 {
 // Constructor
-    fChamber   = iChamber;
+   
+    fIsDetElemId = kTRUE;
+    fDetElemId = vol[0];
+    fParticle  = hits[0];
+    fX         = hits[1];
+    fY         = hits[2];
+    fZ         = hits[3];
+    fTheta     = hits[4];
+    fPhi       = hits[5];
+    fTlength   = hits[6];
+    fEloss     = hits[7];
+    fPHfirst   = (Int_t) hits[8];
+    fPHlast    = (Int_t) hits[9];
+    fPTot      = hits[10];
+    fPx        = hits[11];
+    fPy        = hits[12];
+    fPz        = hits[13];
+    fAge       = hits[14];
+    fXref      = 0.;
+    fYref      = 0.;
+    fZref      = 0.;
+}
+
+//___________________________________________
+AliMUONHit::AliMUONHit(Int_t shunt, Int_t track, Int_t iChamber, 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)
+{
+// Constructor
+// TBR
+
+    fIsDetElemId = kFALSE;
+    fDetElemId = iChamber;
     fParticle  = idpart;
     fX         = X;
     fY         = Y;
@@ -58,13 +119,129 @@ AliMUONHit::AliMUONHit(Int_t shunt, Int_t track, Int_t iChamber, Int_t idpart, F
     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) ;
     fAge       = tof;
+    fXref      = 0.;
+    fYref      = 0.;
+    fZref      = 0.;
 }
 
+//___________________________________________
+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,
+                      Bool_t /*isDetElemId*/):
+       AliHit(shunt, track)
+{
+// Constructor
+    fIsDetElemId = kTRUE;
+    fDetElemId = detElemId;
+    fParticle  = idpart;
+    fX         = X;
+    fY         = Y;
+    fZ         = Z;
+    fTheta     = theta;
+    fPhi       = phi;
+    fTlength   = length;
+    fEloss     = destep;
+    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) ;
+    fAge       = tof;
+    fXref      = 0.;
+    fYref      = 0.;
+    fZref      = 0.;
+}
 
+//-----------------------------------------------------------------------------------------------
+AliMUONHit::AliMUONHit(Int_t shunt, Int_t track, Int_t iChamber, 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)
+{
+// Constructor
+// TBR
 
+    fIsDetElemId = kFALSE;
+    fDetElemId = iChamber;
+    fParticle  = idpart;
+    fX         = X;
+    fY         = Y;
+    fZ         = Z;
+    fTheta     = theta;
+    fPhi       = phi;
+    fTlength   = length;
+    fEloss     = destep;
+    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) ;
+    fAge       = tof;
+    fXref      = Xref;
+    fYref      = Yref;
+    fZref      = Zref;
+}
+//-----------------------------------------------------------------------------------------------
+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,
+                      Bool_t /*isDetElemId*/):
+       AliHit(shunt, track)
+{
+// Constructor
+    fIsDetElemId = kTRUE;
+    fDetElemId = detElemId;
+    fParticle  = idpart;
+    fX         = X;
+    fY         = Y;
+    fZ         = Z;
+    fTheta     = theta;
+    fPhi       = phi;
+    fTlength   = length;
+    fEloss     = destep;
+    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) ;
+    fAge       = tof;
+    fXref      = Xref;
+    fYref      = Yref;
+    fZref      = Zref;
+}
 
+//-----------------------------------------------------------------------------------------------
+Int_t AliMUONHit::DetElemId()const
+{
+// Return detection element ID
 
+  if (!fIsDetElemId) {
+    AliWarning("Detection element Id is not defined.");
+    return 0;
+  }  
+  // end of TBR
+  
+  return fDetElemId;
+}
 
+//-----------------------------------------------------------------------------------------------
+Int_t  AliMUONHit::Chamber()  const
+{  
+// Return chamber ID
 
+  if (!fIsDetElemId) 
+    return fDetElemId;
+  else  
+    return AliMUONGeometryDEIndexing::GetModuleId(fDetElemId)+1;  
+}