]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - EMCAL/AliEMCALv2.cxx
Fixes for running on MC for JetChem, lower limit for p_T of jets in spectrum and...
[u/mrichter/AliRoot.git] / EMCAL / AliEMCALv2.cxx
index e57b14383f01cf42aecadec86a34ecf850159b4b..4ca0f071d6ed276f06ec420671c60566e8b54ae4 100644 (file)
@@ -44,7 +44,7 @@
 #include "AliHeader.h"
 #include "AliMC.h"
 #include "AliStack.h"
-#include "AliPoints.h"
+#include "AliTrackReference.h"
 // for TRD1 case only; May 31,2006
 
 ClassImp(AliEMCALv2)
@@ -159,8 +159,8 @@ void AliEMCALv2::StepManager(void){
 
       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);
@@ -185,6 +185,10 @@ void AliEMCALv2::StepManager(void){
            //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);
@@ -219,7 +223,7 @@ void AliEMCALv2::StepManager(void){
           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);
@@ -230,11 +234,30 @@ void AliEMCALv2::StepManager(void){
         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) ; 
       }