#include "AliHeader.h"
#include "AliMC.h"
#include "AliStack.h"
-#include "AliPoints.h"
+#include "AliTrackReference.h"
// for TRD1 case only; May 31,2006
ClassImp(AliEMCALv2)
if (fCurParent==-1 || tracknumber != fCurTrack) {
// Check parentage
- //Int_t parent=tracknumber;
parent=tracknumber;
+
if (fCurParent != -1) {
while (parent != fCurParent && parent != -1) {
//TParticle *part=gAlice->GetMCApp()->Particle(parent);
//TParticle *part=gAlice->GetMCApp()->Particle(fCurParent);
part=gAlice->GetMCApp()->Particle(fCurParent);
ienergy = part->Energy();
+
+ //Add reference to parent in TR tree.
+ AddTrackReference(tracknumber, AliTrackReference::kEMCAL);
+
}
while (parent != -1) {
part=gAlice->GetMCApp()->Particle(parent);
if (strcmp(gMC->CurrentVolOffName(0),"SCX1")==0) xNumber=1;
else if(strcmp(gMC->CurrentVolOffName(0),"SCX2")==0) xNumber=2;
else if(strcmp(gMC->CurrentVolOffName(0),"SCX3")==0) xNumber=3;
- else Fatal("StepManager()", "Wrong name of sensetive volume in 3X3 case : %s ", gMC->CurrentVolOffName(0));
+ else Fatal("StepManager()", "Wrong name of sensitive volume in 3X3 case : %s ", gMC->CurrentVolOffName(0));
}
} else {
gMC->CurrentVolOffID(5, supModuleNumber);
else if(strcmp(gMC->CurrentVolOffName(5),"SMON")==0) supModuleNumber = nSMON[supModuleNumber-1];
else assert(0); // something wrong
}
- absid = fGeometry->GetAbsCellId(supModuleNumber-1, moduleNumber-1, yNumber-1, xNumber-1);
-
+
+ // Due to problem with index ordering conventions the calcultation of absid is no more like this:
+ //absid = fGeometry->GetAbsCellId(smNumber, moduleNumber-1, yNumber-1, xNumber-1);
+
+ //Swap A side in Phi and C side in Eta due to wrong indexing.
+ Int_t iphi = -1;
+ Int_t ieta = -1;
+ Int_t smNumber = supModuleNumber-1;
+ Int_t smType = 1;
+ fGeometry->GetCellPhiEtaIndexInSModule(smNumber,moduleNumber-1,yNumber-1,xNumber-1, iphi, ieta);
+ if (smNumber%2 == 0) {
+ ieta = ((fGeometry->GetCentersOfCellsEtaDir()).GetSize()-1)-ieta;// 47-ieta, revert the ordering on A side in order to keep convention.
+ }
+ else {
+ if(smNumber >= 10) smType = 2 ; //half supermodule
+ iphi= ((fGeometry->GetCentersOfCellsPhiDir()).GetSize()/smType-1)-iphi;//23-iphi, revert the ordering on C side in order to keep convention.
+ }
+
+ //Once we know the indexes, calculate the absolute ID
+ absid = fGeometry->GetAbsCellIdFromCellIndexes(smNumber, iphi, ieta);
+
if (absid < 0) {
printf(" supModuleNumber %i : moduleNumber %i : yNumber %i : xNumber %i \n",
- supModuleNumber, moduleNumber, yNumber, xNumber);
+ supModuleNumber, moduleNumber, yNumber, xNumber);
Fatal("StepManager()", "Wrong id : %i ", absid) ;
}