//_________________________________________________________________________
// Implementation version v1 of PHOS Manager class
//---
-// Layout EMC + PPSD has name GPS2:
-// Produces cumulated hits
-//---
// Layout EMC + CPV has name IHEP:
// Produces hits for CPV, cumulated hits
//---
-// Layout EMC + CPV + PPSD has name GPS:
-// Produces hits for CPV, cumulated hits
-//---
//*-- Author: Yves Schutz (SUBATECH)
// --- ROOT system ---
-#include "TBRIK.h"
-#include "TNode.h"
#include "TRandom.h"
#include "TTree.h"
#include "AliPHOSv1.h"
#include "AliPHOSHit.h"
#include "AliPHOSDigit.h"
-#include "AliPHOSReconstructioner.h"
+#include "AliPHOSReconstructor.h"
#include "AliRun.h"
#include "AliConst.h"
-#include "AliMC.h"
ClassImp(AliPHOSv1)
AliPHOSv0(name,title)
{
// ctor : title is used to identify the layout
- // GPS2 = 5 modules (EMC + PPSD)
// IHEP = 5 modules (EMC + CPV )
- // MIXT = 4 modules (EMC + CPV ) and 1 module (EMC + PPSD)
//
// We store hits :
// - fHits (the "normal" one), which retains the hits associated with
}
//____________________________________________________________________________
-AliPHOSv1::AliPHOSv1(AliPHOSReconstructioner * Reconstructioner, const char *name, const char *title):
+AliPHOSv1::AliPHOSv1(AliPHOSReconstructor * Reconstructioner, const char *name, const char *title):
AliPHOSv0(name,title)
{
// ctor : title is used to identify the layout
- // GPS2 = 5 modules (EMC + PPSD)
fPinElectronicNoise = 0.010 ;
for (itrack=0; itrack<gAlice->GetNtrack(); itrack++){
//=========== Get the Hits Tree for the Primary track itrack
- gAlice->ResetHits();
- gAlice->TreeH()->GetEvent(itrack);
+ gAlice->ResetHits();
+ if (TreeH() == 0x0)
+ {
+ Error("Hits2SDigits","Can not find TreeH in the folder");
+ return;
+ }
+ TreeH()->GetEvent(itrack);
for ( i = 0 ; i < fHits->GetEntries() ; i++ ) {
}
//_____________________________________________________________________________
-void AliPHOSv1::Reconstruction(AliPHOSReconstructioner * Reconstructioner)
+void AliPHOSv1::Reconstruction(AliPHOSReconstructor * Reconstructioner)
{
// 1. Reinitializes the existing RecPoint, TrackSegment, and RecParticles Lists and
// 2. Creates TreeR with a branch for each list
Bool_t entered = kFALSE ;
Int_t copy ;
- Int_t tracknumber = gAlice->CurrentTrack() ;
- Int_t primary = gAlice->GetPrimary( gAlice->CurrentTrack() );
+ Int_t tracknumber = gAlice->GetCurrentTrackNumber() ;
+ Int_t primary = gAlice->GetPrimary( gAlice->GetCurrentTrackNumber() );
TString name = GetGeometry()->GetName() ;
Int_t trackpid = 0 ;
- if( gMC->IsTrackEntering() ){ // create hit with position and momentum of new particle,
+ if( TVirtualMC::GetMC()->IsTrackEntering() ){ // create hit with position and momentum of new particle,
// but may be without energy deposition
// Current position of the hit in the local ref. system
- gMC -> TrackPosition(pos);
+ TVirtualMC::GetMC() -> TrackPosition(pos);
Float_t xyzm[3], xyzd[3] ;
Int_t i;
for (i=0; i<3; i++) xyzm[i] = pos[i];
- gMC -> Gmtod (xyzm, xyzd, 1); // transform coordinate from master to daughter system
+ TVirtualMC::GetMC() -> Gmtod (xyzm, xyzd, 1); // transform coordinate from master to daughter system
xyd[0] = xyzd[0];
xyd[1] =-xyzd[1];
xyd[2] =-xyzd[2];
// Current momentum of the hit's track in the local ref. system
- gMC -> TrackMomentum(pmom);
+ TVirtualMC::GetMC() -> TrackMomentum(pmom);
Float_t pm[3], pd[3];
for (i=0; i<3; i++) pm[i] = pmom[i];
- gMC -> Gmtod (pm, pd, 2); // transform 3-momentum from master to daughter system
+ TVirtualMC::GetMC() -> Gmtod (pm, pd, 2); // transform 3-momentum from master to daughter system
pmom[0] = pd[0];
pmom[1] =-pd[1];
pmom[2] =-pd[2];
- trackpid = gMC->TrackPid();
+ trackpid = TVirtualMC::GetMC()->TrackPid();
entered = kTRUE ; // Mark to create hit even withou energy deposition
}
- if ( name == "GPS2" || name == "MIXT" ) { // ======> CPV is a GPS' PPSD
-
- if( gMC->CurrentVolID(copy) == gMC->VolId("PPCE") ) // We are inside a gas cell
- {
- gMC->TrackPosition(pos) ;
- xyze[0] = pos[0] ;
- xyze[1] = pos[1] ;
- xyze[2] = pos[2] ;
- xyze[3] = gMC->Edep() ;
-
- if ( (xyze[3] != 0) || entered ) { // there is deposited energy or new particle entering PPSD
- gMC->CurrentVolOffID(5, relid[0]) ; // get the PHOS Module number
- if ( name == "MIXT" && strcmp(gMC->CurrentVolOffName(5),"PHO1") == 0 ){
- relid[0] += GetGeometry()->GetNModules() - GetGeometry()->GetNPPSDModules();
- }
- gMC->CurrentVolOffID(3, relid[1]) ; // get the Micromegas Module number
- // 1-> GetGeometry()->GetNumberOfModulesPhi() * GetGeometry()->GetNumberOfModulesZ() upper
- // > GetGeometry()->GetNumberOfModulesPhi() * GetGeometry()->GetNumberOfModulesZ() lower
- gMC->CurrentVolOffID(1, relid[2]) ; // get the row number of the cell
- gMC->CurrentVolID(relid[3]) ; // get the column number
-
- // get the absolute Id number
-
- GetGeometry()->RelToAbsNumbering(relid, absid) ;
-
- // add current hit to the hit list
- AddHit(fIshunt, primary, tracknumber, absid, xyze, trackpid, pmom, xyd);
-
-
- } // there is deposited energy
- } // We are inside the gas of the CPV
- } // GPS2 configuration
-
- if ( name == "IHEP" || name == "MIXT" ) { // ======> CPV is a IHEP's one
+ if ( name == "IHEP" ) { // ======> CPV is a IHEP's one
// Yuri Kharlov, 28 September 2000
- if( gMC->CurrentVolID(copy) == gMC->VolId("PCPQ") &&
+ static Int_t idPCPQ = TVirtualMC::GetMC()->VolId("PCPQ");
+ if( TVirtualMC::GetMC()->CurrentVolID(copy) == idPCPQ &&
entered &&
- gMC->TrackCharge() != 0) {
+ TVirtualMC::GetMC()->TrackCharge() != 0) {
// Digitize the current CPV hit:
// 1. find pad response and
Int_t moduleNumber;
- gMC->CurrentVolOffID(3,moduleNumber);
+ TVirtualMC::GetMC()->CurrentVolOffID(3,moduleNumber);
moduleNumber--;
} // end of IHEP configuration
- if(gMC->CurrentVolID(copy) == gMC->VolId("PXTL") ) { // We are inside a PBWO crystal
- gMC->TrackPosition(pos) ;
+ if(TVirtualMC::GetMC()->CurrentVolID(copy) == TVirtualMC::GetMC()->VolId("PXTL") ) { // We are inside a PBWO crystal
+ TVirtualMC::GetMC()->TrackPosition(pos) ;
xyze[0] = pos[0] ;
xyze[1] = pos[1] ;
xyze[2] = pos[2] ;
- xyze[3] = gMC->Edep() ;
+ xyze[3] = TVirtualMC::GetMC()->Edep() ;
if ( (xyze[3] != 0) || entered ) { // Track is inside the crystal and deposits some energy or just entered
- gMC->CurrentVolOffID(10, relid[0]) ; // get the PHOS module number ;
-
- if ( name == "MIXT" && strcmp(gMC->CurrentVolOffName(10),"PHO1") == 0 )
- relid[0] += GetGeometry()->GetNModules() - GetGeometry()->GetNPPSDModules();
+ TVirtualMC::GetMC()->CurrentVolOffID(10, relid[0]) ; // get the PHOS module number ;
relid[1] = 0 ; // means PBW04
- gMC->CurrentVolOffID(4, relid[2]) ; // get the row number inside the module
- gMC->CurrentVolOffID(3, relid[3]) ; // get the cell number inside the module
+ TVirtualMC::GetMC()->CurrentVolOffID(4, relid[2]) ; // get the row number inside the module
+ TVirtualMC::GetMC()->CurrentVolOffID(3, relid[3]) ; // get the cell number inside the module
// get the absolute Id number
GetGeometry()->RelToAbsNumbering(relid, absid) ;