//_________________________________________________________________________
// 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)
#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 ;
AliPHOSGeometry::GetInstance(title, "") ;
if (GetGeometry()->IsInitialized() )
- cout << "AliPHOS" << Version() << " : PHOS geometry intialized for " << GetGeometry()->GetName() << endl ;
+ Info("AliPHOSv1", "AliPHOS %d : PHOS geometry intialized for %s", Version(), GetGeometry()->GetName() );
else
- cout << "AliPHOS" << Version() << " : PHOS geometry initialization failed !" << endl ;
+ Info("AliPHOSv1", "AliPHOS %d : PHOS geometry initialization failed !", Version() ) ;
// Defining the PHOS Reconstructioner
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++ ) {
//we assume, that there is al least one EMC digit...
if(fSDigits->GetEntries() == 0) {
- cout << "PHOS::SDigits2Digits> No SDigits !!! Do not produce Digits " << endl ;
+ Warning("SDigits2Digits", "No SDigits !!! Do not produce Digits ") ;
return ;
}
}
//_____________________________________________________________________________
-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 ( 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 = gMC->VolId("PCPQ");
+ if( gMC->CurrentVolID(copy) == idPCPQ &&
entered &&
gMC->TrackCharge() != 0) {
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();
-
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
Float_t pNorm = p.Py();
Float_t eloss = kdEdx;
-// cout << "CPVDigitize: YVK : "<<hitX<<" "<<hitZ<<" | "<<pX<<" "<<pZ<<" "<<pNorm<<endl;
-
Float_t dZY = pZ/pNorm * GetGeometry()->GetCPVGasThickness();
Float_t dXY = pX/pNorm * GetGeometry()->GetCPVGasThickness();
gRandom->Rannor(rnor1,rnor2);