]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG4/PartCorrBase/AliCaloTrackMCReader.cxx
changed cut calue
[u/mrichter/AliRoot.git] / PWG4 / PartCorrBase / AliCaloTrackMCReader.cxx
index 23d726aad68d4e12170eed71dcfbf42ba2c8d0c6..a6698d060a222dac47d22f89b84c1e7a5b4d5307 100755 (executable)
@@ -19,6 +19,8 @@
 // or other particle identification and correlations
 // Separates generated particles into charged (CTS) 
 // and neutral (PHOS or EMCAL acceptance)
+// Now, it only works with data stored in Kinematics.root and 
+// not in filtered Kinematics branch in AODs
 //
 //*-- Author: Gustavo Conesa (LNF-INFN) 
 //////////////////////////////////////////////////////////////////////////////
@@ -37,7 +39,7 @@
 #include "AliCaloTrackMCReader.h" 
 #include "AliGenEventHeader.h"
 #include "AliStack.h"
-#include "AliAODCaloCluster.h"
+#include "AliVCluster.h"
 #include "AliAODTrack.h"
 #include "AliAODEvent.h"
 #include "AliFiducialCut.h"
@@ -50,62 +52,21 @@ AliCaloTrackMCReader::AliCaloTrackMCReader() :
   AliCaloTrackReader(), fDecayPi0(0), 
   fNeutralParticlesArray(0x0), fChargedParticlesArray(0x0), 
   fStatusArray(0x0), fKeepAllStatus(0), fCheckOverlap(0),  
-  fEMCALOverlapAngle(0),fPHOSOverlapAngle(0), fIndex2ndPhoton(0)
+  fEMCALOverlapAngle(0),fPHOSOverlapAngle(0), fIndex2ndPhoton(0),
+  fOnlyGeneratorParticles(kTRUE)
 {
   //Ctor
   
   //Initialize parameters
   InitParameters();
-  fDataType = kMC;  
-  fReadStack          = kTRUE;
-  fReadAODMCParticles = kFALSE;
-  
-}
-/*
-//____________________________________________________________________________
-AliCaloTrackMCReader::AliCaloTrackMCReader(const AliCaloTrackMCReader & g) :   
-  AliCaloTrackReader(g), fDecayPi0(g.fDecayPi0), 
-  fNeutralParticlesArray(g.fNeutralParticlesArray?new TArrayI(*g.fNeutralParticlesArray):0x0),
-  fChargedParticlesArray(g.fChargedParticlesArray?new TArrayI(*g.fChargedParticlesArray):0x0),
-  fStatusArray(g.fStatusArray?new TArrayI(*g.fStatusArray):0x0),
-  fKeepAllStatus(g.fKeepAllStatus), fCheckOverlap(g.fCheckOverlap),
-  fEMCALOverlapAngle( g.fEMCALOverlapAngle), fPHOSOverlapAngle(g.fPHOSOverlapAngle),
-  fIndex2ndPhoton(g.fIndex2ndPhoton)
-{
-  // cpy ctor
 }
-*/
-//_________________________________________________________________________
-//AliCaloTrackMCReader & AliCaloTrackMCReader::operator = (const AliCaloTrackMCReader & source)
-//{
-//  // assignment operator
-//
-//  if(&source == this) return *this;
-//
-//  fDecayPi0 = source.fDecayPi0; 
-//
-//  delete fChargedParticlesArray;
-//  fChargedParticlesArray = source.fChargedParticlesArray?new TArrayI(*source.fChargedParticlesArray):0x0;
-//
-//  delete fNeutralParticlesArray;
-//  fNeutralParticlesArray = source.fNeutralParticlesArray?new TArrayI(*source.fNeutralParticlesArray):0x0;
-//
-//  delete fStatusArray;
-//  fStatusArray = source.fStatusArray?new TArrayI(*source.fStatusArray):0x0;
-// 
-//  fKeepAllStatus = source.fKeepAllStatus ;
-//
-//  return *this;
-//
-//}
-//
 //_________________________________
 AliCaloTrackMCReader::~AliCaloTrackMCReader() {
   //Dtor
 
   if(fChargedParticlesArray) delete fChargedParticlesArray ;
   if(fNeutralParticlesArray) delete fNeutralParticlesArray ;
-  if(fStatusArray) delete fStatusArray ;
+  if(fStatusArray)           delete fStatusArray ;
 
 }
 
@@ -121,7 +82,6 @@ void AliCaloTrackMCReader::GetVertex(Double_t  v[3]) const {
 
 }
 
-
 //_______________________________________________________________
 void AliCaloTrackMCReader::InitParameters()
 {
@@ -138,14 +98,26 @@ void AliCaloTrackMCReader::InitParameters()
   fNeutralParticlesArray->SetAt(12,0); fNeutralParticlesArray->SetAt(14,1); fNeutralParticlesArray->SetAt(16,2); 
   fStatusArray = new TArrayI(1);
   fStatusArray->SetAt(1,0); 
-  fKeepAllStatus = kTRUE;
+  
+  fOnlyGeneratorParticles = kTRUE;
+  fKeepAllStatus          = kTRUE;
 
-  fCheckOverlap = kFALSE;
-  fEMCALOverlapAngle = 2.5 * TMath::DegToRad();
-  fPHOSOverlapAngle = 0.5 * TMath::DegToRad();
-  fIndex2ndPhoton = -1;
+  fCheckOverlap       = kFALSE;
+  fEMCALOverlapAngle  = 2.5 * TMath::DegToRad();
+  fPHOSOverlapAngle   = 0.5 * TMath::DegToRad();
+  fIndex2ndPhoton     = -1;
+  
+  fDataType           = kMC;  
+  fReadStack          = kTRUE;
+  fReadAODMCParticles = kFALSE; //This class only works with Kinematics.root input.
+  
+  //For this reader we own the objects of the arrays
+  fCTSTracks    ->SetOwner(kTRUE); 
+  fEMCALClusters->SetOwner(kTRUE); 
+  fPHOSClusters ->SetOwner(kTRUE); 
+  
 }
+
 //____________________________________________________________________________
 void  AliCaloTrackMCReader::CheckOverlap(const Float_t anglethres, const Int_t imom, Int_t & iPrimary, Int_t & index, TLorentzVector & mom, Int_t & pdg) {
   //Check overlap of decay photons
@@ -189,37 +161,35 @@ void  AliCaloTrackMCReader::CheckOverlap(const Float_t anglethres, const Int_t i
 }
 
 //____________________________________________________________________________
-void  AliCaloTrackMCReader::FillCalorimeters(Int_t & iParticle, TParticle* particle, TLorentzVector momentum,
-                                            Int_t &ncalo) {
+void  AliCaloTrackMCReader::FillCalorimeters(Int_t & iParticle, TParticle* particle, TLorentzVector &momentum) {
   //Fill AODCaloClusters or TParticles lists of PHOS or EMCAL
   //In PHOS
   if(fFillPHOS && momentum.Pt() > fPHOSPtMin){
          
-       if(!fFiducialCut->IsInFiducialCut(momentum,"PHOS")) return;
+       if(fCheckFidCut && !fFiducialCut->IsInFiducialCut(momentum,"PHOS")) return;
          
     Int_t index = iParticle ;
     Int_t pdg = TMath::Abs(particle->GetPdgCode());
     if(fCheckOverlap) 
       CheckOverlap(fPHOSOverlapAngle,particle->GetFirstMother(),index, iParticle, momentum, pdg);
     
-    Char_t ttype= AliAODCluster::kPHOSNeutral; 
+    Char_t ttype= AliVCluster::kPHOSNeutral;   
     Int_t labels[] = {index};
     Float_t x[] = {momentum.X(), momentum.Y(), momentum.Z()};
     //Create object and write it to file
-    AliAODCaloCluster *calo = new((*(fOutputEvent->GetCaloClusters()))[ncalo++]) 
-      AliAODCaloCluster(index,1,labels,momentum.E(), x, NULL, ttype, 0);
+    AliAODCaloCluster *calo = new AliAODCaloCluster(index,1,labels,momentum.E(), x, NULL, ttype, 0);
     
     SetCaloClusterPID(pdg,calo) ;
     if(fDebug > 3 && momentum.Pt() > 0.2)
       printf("AliCaloTrackMCReader::FillCalorimeters() - PHOS : Selected cluster %s E %3.2f, pt %3.2f, phi %3.2f, eta %3.2f\n",
             particle->GetName(),momentum.E(),momentum.Pt(),momentum.Phi()*TMath::RadToDeg(),momentum.Eta());                   
-    fAODPHOS->Add(calo);//reference the selected object to the list
+    fPHOSClusters->Add(calo);//reference the selected object to the list
   }
   
   //In EMCAL
   if(fFillEMCAL  && momentum.Pt() > fEMCALPtMin){
          
-       if(!fFiducialCut->IsInFiducialCut(momentum,"EMCAL")) return;
+       if(fCheckFidCut && !fFiducialCut->IsInFiducialCut(momentum,"EMCAL")) return;
          
     Int_t index = iParticle ;
     Int_t pdg = TMath::Abs(particle->GetPdgCode());
@@ -227,39 +197,40 @@ void  AliCaloTrackMCReader::FillCalorimeters(Int_t & iParticle, TParticle* parti
     if(fCheckOverlap) 
       CheckOverlap(fEMCALOverlapAngle,particle->GetFirstMother(),iParticle, index, momentum, pdg);
     
-    Char_t ttype= AliAODCluster::kEMCALClusterv1;
+    Char_t ttype= AliVCluster::kEMCALClusterv1;
     Int_t labels[] = {index};
     Float_t x[] = {momentum.X(), momentum.Y(), momentum.Z()};
     //Create object and write it to file
-    AliAODCaloCluster *calo = new((*(fOutputEvent->GetCaloClusters()))[ncalo++]) 
-      AliAODCaloCluster(iParticle,1,labels,momentum.E(), x, NULL, ttype, 0);
+    AliAODCaloCluster *calo = new AliAODCaloCluster(iParticle,1,labels,momentum.E(), x, NULL, ttype, 0);
     
     SetCaloClusterPID(pdg,calo) ;
     if(fDebug > 3 && momentum.Pt() > 0.2)
       printf("AliCaloTrackMCReader::FillCalorimeters() - EMCAL : Selected cluster %s E %3.2f, pt %3.2f, phi %3.2f, eta %3.2f\n",
             particle->GetName(),momentum.E(),momentum.Pt(),momentum.Phi()*TMath::RadToDeg(),momentum.Eta());   
-    fAODEMCAL->Add(calo);//reference the selected object to the list
+    fEMCALClusters->Add(calo);//reference the selected object to the list
   }
 }
 
 //____________________________________________________________________________
-Bool_t AliCaloTrackMCReader::FillInputEvent(const Int_t iEntry, const char * currentFileName){
+Bool_t AliCaloTrackMCReader::FillInputEvent(const Int_t iEntry, const char * /*currentFileName*/){
   //Fill the event counter and input lists that are needed, called by the analysis maker.
   
-  fEventNumber = iEntry;
-  fCurrentFileName = TString(currentFileName);
-       
+  fEventNumber     = iEntry;
+  //fCurrentFileName = TString(currentFileName);
+  fTrackMult       = 0;
   //In case of analysis of events with jets, skip those with jet pt > 5 pt hard        
   if(fComparePtHardAndJetPt && GetStack()) {
-       if(!ComparePtHardAndJetPt()) return kFALSE ;
+    if(!ComparePtHardAndJetPt()) return kFALSE ;
   }
        
-  Int_t iParticle = 0 ;
-  Double_t charge = 0.;
-  Int_t ncalo  = (fOutputEvent->GetCaloClusters())->GetEntriesFast();
-  Int_t ntrack = (fOutputEvent->GetTracks())->GetEntriesFast();
-       
-  for (iParticle = 0 ; iParticle <  GetStack()->GetNtrack() ; iParticle++) {
+  //Fill Vertex array
+  FillVertexArray();
+  
+  Int_t iParticle  = 0 ;
+  Double_t charge  = 0.;
+  Int_t nparticles = GetStack()->GetNtrack() ;
+  if(fOnlyGeneratorParticles) nparticles=GetStack()->GetNprimary();
+  for (iParticle = 0 ; iParticle <  nparticles ; iParticle++) {
     TParticle * particle = GetStack()->Particle(iParticle);
     TLorentzVector momentum;
     Float_t p[3];
@@ -276,65 +247,69 @@ Bool_t AliCaloTrackMCReader::FillInputEvent(const Int_t iEntry, const char * cur
       particle->Momentum(momentum);
       //---------- Charged particles ----------------------
       if(charge != 0){
-                if(fFillCTS && (momentum.Pt() > fCTSPtMin)){
-         //Particles in CTS acceptance
-               
-         if(!fFiducialCut->IsInFiducialCut(momentum,"CTS")) continue;
-               
-         if(fDebug > 3 && momentum.Pt() > 0.2)
-           printf("AliCaloTrackMCReader::FillInputEvent() - CTS : Selected tracks E %3.2f, pt %3.2f, phi %3.2f, eta %3.2f\n",
-                  momentum.E(),momentum.Pt(),momentum.Phi()*TMath::RadToDeg(),momentum.Eta());
-         
-         x[0] = particle->Vx(); x[1] = particle->Vy(); x[2] = particle->Vz();
-         p[0] = particle->Px(); p[1] = particle->Py(); p[2] = particle->Pz();
-         //Create object and write it to file
-         AliAODTrack *aodTrack = new((*(fOutputEvent->GetTracks()))[ntrack++]) 
-           AliAODTrack(0, iParticle, p, kTRUE, x, kFALSE,NULL, 0, 0, 
-                       NULL,
-                       0x0,//primary,
-                       kFALSE, // No fit performed
-                       kFALSE, // No fit performed
-                       AliAODTrack::kPrimary, 
-                       0);
-         SetTrackChargeAndPID(pdg, aodTrack);
-         fAODCTS->Add(aodTrack);//reference the selected object to the list
-       }
-       //Keep some charged particles in calorimeters lists
-       if((fFillPHOS || fFillEMCAL) && KeepChargedParticles(pdg)) FillCalorimeters(iParticle, particle, momentum, ncalo);
-       
+        
+        if(TMath::Abs(momentum.Eta())< fTrackMultEtaCut) fTrackMult++;
+        
+        if(fFillCTS && (momentum.Pt() > fCTSPtMin)){
+          //Particles in CTS acceptance
+          
+          if(fCheckFidCut && !fFiducialCut->IsInFiducialCut(momentum,"CTS")) continue;
+          
+          if(TMath::Abs(pdg) == 11 && GetStack()->Particle(particle->GetFirstMother())->GetPdgCode()==22) continue ;
+          
+          if(fDebug > 3 && momentum.Pt() > 0.2)
+            printf("AliCaloTrackMCReader::FillInputEvent() - CTS : Selected tracks E %3.2f, pt %3.2f, phi %3.2f, eta %3.2f\n",
+                   momentum.E(),momentum.Pt(),momentum.Phi()*TMath::RadToDeg(),momentum.Eta());
+          
+          x[0] = particle->Vx(); x[1] = particle->Vy(); x[2] = particle->Vz();
+          p[0] = particle->Px(); p[1] = particle->Py(); p[2] = particle->Pz();
+          //Create object and write it to file
+          AliAODTrack *aodTrack = new AliAODTrack(0, iParticle, p, kTRUE, x, kFALSE,NULL, 0, 0, 
+                                                  NULL,
+                                                  0x0,//primary,
+                                                  kFALSE, // No fit performed
+                                                  kFALSE, // No fit performed
+                                                  AliAODTrack::kPrimary, 
+                                                  0);
+          SetTrackChargeAndPID(pdg, aodTrack);
+          fCTSTracks->Add(aodTrack);//reference the selected object to the list
+        }
+        //Keep some charged particles in calorimeters lists
+        if((fFillPHOS || fFillEMCAL) && KeepChargedParticles(pdg)) FillCalorimeters(iParticle, particle, momentum);
+        
       }//Charged
       
       //-------------Neutral particles ----------------------
       else if(charge == 0 && (fFillPHOS || fFillEMCAL)){
-       //Skip neutrinos or other neutral particles
-       //if(SkipNeutralParticles(pdg) || particle->IsPrimary()) continue ; // protection added (MG)
-       if(SkipNeutralParticles(pdg)) continue ;
-       //Fill particle/calocluster arrays
-       if(!fDecayPi0) {
-         FillCalorimeters(iParticle, particle, momentum, ncalo);
-       }
-       else {
-         //Sometimes pi0 are stable for the generator, if needed decay it by hand
-         if(pdg == 111 ){
-           if(momentum.Pt() >  fPHOSPtMin || momentum.Pt() >  fEMCALPtMin){
-             TLorentzVector lvGamma1, lvGamma2 ;
-             //Double_t angle = 0;
-             
-             //Decay
-             MakePi0Decay(momentum,lvGamma1,lvGamma2);//,angle);
-             
-             //Check if Pi0 is in the acceptance of the calorimeters, if aperture angle is small, keep it
-             TParticle * pPhoton1 = new TParticle(22,1,iParticle,0,0,0,lvGamma1.Px(),lvGamma1.Py(),
-                                                  lvGamma1.Pz(),lvGamma1.E(),0,0,0,0);   
-             TParticle * pPhoton2 = new TParticle(22,1,iParticle,0,0,0,lvGamma2.Px(),lvGamma2.Py(),
-                                                  lvGamma2.Pz(),lvGamma2.E(),0,0,0,0);
-             //Fill particle/calocluster arrays
-             FillCalorimeters(iParticle,pPhoton1,lvGamma1, ncalo);
-             FillCalorimeters(iParticle,pPhoton2,lvGamma2, ncalo);
-           }//pt cut
-         }//pi0
-         else FillCalorimeters(iParticle,particle, momentum, ncalo); //Add the rest
-       }
+        //Skip neutrinos or other neutral particles
+        //if(SkipNeutralParticles(pdg) || particle->IsPrimary()) continue ; // protection added (MG)
+        if(SkipNeutralParticles(pdg)) continue ;
+        //Fill particle/calocluster arrays
+        if(!fDecayPi0) {
+          FillCalorimeters(iParticle, particle, momentum);
+        }
+        else {
+          //Sometimes pi0 are stable for the generator, if needed decay it by hand
+          if(pdg == 111 ){
+            if(momentum.Pt() >  fPHOSPtMin || momentum.Pt() >  fEMCALPtMin){
+              TLorentzVector lvGamma1, lvGamma2 ;
+              //Double_t angle = 0;
+              
+              //Decay
+              MakePi0Decay(momentum,lvGamma1,lvGamma2);//,angle);
+              
+              //Check if Pi0 is in the acceptance of the calorimeters, if aperture angle is small, keep it
+              TParticle * pPhoton1 = new TParticle(22,1,iParticle,0,0,0,lvGamma1.Px(),lvGamma1.Py(),
+                                                   lvGamma1.Pz(),lvGamma1.E(),0,0,0,0);   
+              TParticle * pPhoton2 = new TParticle(22,1,iParticle,0,0,0,lvGamma2.Px(),lvGamma2.Py(),
+                                                   lvGamma2.Pz(),lvGamma2.E(),0,0,0,0);
+              //Fill particle/calocluster arrays
+              FillCalorimeters(iParticle,pPhoton1,lvGamma1);
+              FillCalorimeters(iParticle,pPhoton2,lvGamma2);
+            }//pt cut
+          }//pi0
+          else FillCalorimeters(iParticle,particle, momentum); //Add the rest
+        }
       }//neutral particles
     } //particle with correct status
   }//particle loop
@@ -342,7 +317,7 @@ Bool_t AliCaloTrackMCReader::FillInputEvent(const Int_t iEntry, const char * cur
   fIndex2ndPhoton = -1; //In case of overlapping studies, reset for each event 
        
   return kTRUE;        
-
+  
 }
 
 //________________________________________________________________
@@ -379,6 +354,8 @@ void AliCaloTrackMCReader::Print(const Option_t * opt) const
   if(! opt)
     return;
   
+  AliCaloTrackReader::Print(opt);
+  
   printf("**** Print **** %s %s ****\n", GetName(), GetTitle() ) ;
   
   printf("Decay Pi0?          : %d\n", fDecayPi0) ;
@@ -704,7 +681,7 @@ void AliCaloTrackMCReader::SetTrackChargeAndPID(const Int_t pdgCode, AliAODTrack
 }
 
 //____________________________________________________________________
-void AliCaloTrackMCReader::SetCaloClusterPID(const Int_t pdgCode, AliAODCaloCluster *calo) const {
+void AliCaloTrackMCReader::SetCaloClusterPID(const Int_t pdgCode, AliVCluster *calo) const {
 //Give a PID weight for CaloClusters equal to 1 depending on the particle type
 
   Float_t pid[13] = {0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.};
@@ -712,198 +689,198 @@ void AliCaloTrackMCReader::SetCaloClusterPID(const Int_t pdgCode, AliAODCaloClus
   switch (pdgCode) {
 
   case 22: // gamma
-    pid[AliAODCaloCluster::kPhoton] = 1.;
+    pid[AliVCluster::kPhoton] = 1.;
     calo->SetPID(pid);
     break;
 
   case 11: // e- 
-    pid[AliAODCaloCluster::kElectron] = 1.;
+    pid[AliVCluster::kElectron] = 1.;
     calo->SetPID(pid);
     break;
     
   case -11: // e+
-    pid[AliAODCaloCluster::kElectron] = 1.;
+    pid[AliVCluster::kElectron] = 1.;
     calo->SetPID(pid);
     break;
     
   case 13: // mu- 
-    pid[AliAODCaloCluster::kCharged] = 1.;
+    pid[AliVCluster::kCharged] = 1.;
     calo->SetPID(pid);
     break;
     
   case -13: // mu+
-    pid[AliAODCaloCluster::kCharged] = 1.;
+    pid[AliVCluster::kCharged] = 1.;
     calo->SetPID(pid);
     break;
     
   case 111: // pi0
-    pid[AliAODCaloCluster::kPi0] = 1.;
+    pid[AliVCluster::kPi0] = 1.;
     calo->SetPID(pid);
     break;
     
   case 211: // pi+
-    pid[AliAODCaloCluster::kCharged] = 1.;
+    pid[AliVCluster::kCharged] = 1.;
     calo->SetPID(pid);
     break;
     
   case -211: // pi-
-    pid[AliAODCaloCluster::kCharged] = 1.;
+    pid[AliVCluster::kCharged] = 1.;
     calo->SetPID(pid);
     break;
     
   case 130: // K0L
-    pid[AliAODCaloCluster::kKaon0] = 1.;
-    pid[AliAODCaloCluster::kNeutral] = 1;
+    pid[AliVCluster::kKaon0] = 1.;
+    pid[AliVCluster::kNeutral] = 1;
     calo->SetPID(pid);
     break;
     
   case 321: // K+
-    pid[AliAODCaloCluster::kCharged] = 1.;
+    pid[AliVCluster::kCharged] = 1.;
     calo->SetPID(pid);
     break;
     
   case -321: // K- 
-    pid[AliAODCaloCluster::kCharged] = 1.;
+    pid[AliVCluster::kCharged] = 1.;
     calo->SetPID(pid);
     break;
     
   case 2112: // n
-    pid[AliAODCaloCluster::kNeutron] = 1.;
-    pid[AliAODCaloCluster::kNeutral] = 1.;
+    pid[AliVCluster::kNeutron] = 1.;
+    pid[AliVCluster::kNeutral] = 1.;
     calo->SetPID(pid);
     break;
     
   case 2212: // p
-    pid[AliAODCaloCluster::kCharged] = 1.;
+    pid[AliVCluster::kCharged] = 1.;
     calo->SetPID(pid);
     break;
     
   case -2212: // anti-p
-    pid[AliAODCaloCluster::kCharged] = 1.;
+    pid[AliVCluster::kCharged] = 1.;
     calo->SetPID(pid);
     break;
 
   case 310: // K0S
-    pid[AliAODCaloCluster::kKaon0] = 1.;
-    pid[AliAODCaloCluster::kNeutral] = 1.;
+    pid[AliVCluster::kKaon0] = 1.;
+    pid[AliVCluster::kNeutral] = 1.;
     calo->SetPID(pid);
     break;
     
   case 311: // K0
-    pid[AliAODCaloCluster::kKaon0] = 1.;
-    pid[AliAODCaloCluster::kNeutral] = 1.;
+    pid[AliVCluster::kKaon0] = 1.;
+    pid[AliVCluster::kNeutral] = 1.;
     calo->SetPID(pid);
     break;
     
   case -311: // anti-K0
-    pid[AliAODCaloCluster::kKaon0] = 1.;
-    pid[AliAODCaloCluster::kNeutral] = 1.;
+    pid[AliVCluster::kKaon0] = 1.;
+    pid[AliVCluster::kNeutral] = 1.;
     calo->SetPID(pid);
     break;
     
   case 221: // eta
-    pid[AliAODCaloCluster::kNeutral] = 1.;
+    pid[AliVCluster::kNeutral] = 1.;
     calo->SetPID(pid);
     break;
 
   case 3122: // lambda
-    pid[AliAODCaloCluster::kUnknown] = 1.;
+    pid[AliVCluster::kUnknown] = 1.;
     calo->SetPID(pid);
     break;
 
   case 3222: // Sigma+
-    pid[AliAODCaloCluster::kUnknown] = 1.;
+    pid[AliVCluster::kUnknown] = 1.;
     calo->SetPID(pid);
     break;
 
   case 3212: // Sigma0
-    pid[AliAODCaloCluster::kUnknown] = 1.;
+    pid[AliVCluster::kUnknown] = 1.;
     calo->SetPID(pid);
     break;
 
   case 3112: // Sigma-
-    pid[AliAODCaloCluster::kUnknown] = 1.;
+    pid[AliVCluster::kUnknown] = 1.;
     calo->SetPID(pid);
     break;
 
   case 3322: // Xi0
-    pid[AliAODCaloCluster::kUnknown] = 1.;
+    pid[AliVCluster::kUnknown] = 1.;
     calo->SetPID(pid);
     break;
 
   case 3312: // Xi-
-    pid[AliAODCaloCluster::kUnknown] = 1.;
+    pid[AliVCluster::kUnknown] = 1.;
     calo->SetPID(pid);
     break;
 
   case 3334: // Omega-
-    pid[AliAODCaloCluster::kUnknown] = 1.;
+    pid[AliVCluster::kUnknown] = 1.;
     calo->SetPID(pid);
     break;
 
   case -2112: // n-bar
-    pid[AliAODCaloCluster::kNeutron] = 1.;
-    pid[AliAODCaloCluster::kNeutral] = 1.;
+    pid[AliVCluster::kNeutron] = 1.;
+    pid[AliVCluster::kNeutral] = 1.;
     calo->SetPID(pid);
     break;
 
   case -3122: // anti-Lambda
-    pid[AliAODCaloCluster::kUnknown] = 1.;
+    pid[AliVCluster::kUnknown] = 1.;
     calo->SetPID(pid);
     break;
 
   case -3222: // anti-Sigma-
-    pid[AliAODCaloCluster::kUnknown] = 1.;
+    pid[AliVCluster::kUnknown] = 1.;
     calo->SetPID(pid);
     break;
 
   case -3212: // anti-Sigma0
-    pid[AliAODCaloCluster::kUnknown] = 1.;
+    pid[AliVCluster::kUnknown] = 1.;
     calo->SetPID(pid);
     break;
 
   case -3112: // anti-Sigma+
-    pid[AliAODCaloCluster::kUnknown] = 1.;
+    pid[AliVCluster::kUnknown] = 1.;
     calo->SetPID(pid);
     break;
 
   case -3322: // anti-Xi0
-    pid[AliAODCaloCluster::kUnknown] = 1.;
+    pid[AliVCluster::kUnknown] = 1.;
     calo->SetPID(pid);
     break;
 
   case -3312: // anti-Xi+
-    pid[AliAODCaloCluster::kUnknown] = 1.;
+    pid[AliVCluster::kUnknown] = 1.;
     calo->SetPID(pid);
     break;
 
   case -3334: // anti-Omega+
-    pid[AliAODCaloCluster::kUnknown] = 1.;
+    pid[AliVCluster::kUnknown] = 1.;
     calo->SetPID(pid);
     break;
 
   case 411: // D+
-    pid[AliAODCaloCluster::kUnknown] = 1.;
+    pid[AliVCluster::kUnknown] = 1.;
     calo->SetPID(pid);
     break;
 
   case -411: // D- 
-    pid[AliAODCaloCluster::kUnknown] = 1.;
+    pid[AliVCluster::kUnknown] = 1.;
     calo->SetPID(pid);
     break;
 
   case 421: // D0
-    pid[AliAODCaloCluster::kUnknown] = 1.;
+    pid[AliVCluster::kUnknown] = 1.;
     calo->SetPID(pid);
     break;
 
   case -421: // anti-D0
-    pid[AliAODCaloCluster::kUnknown] = 1.;
+    pid[AliVCluster::kUnknown] = 1.;
     calo->SetPID(pid);
     break;
 
   default : // unknown
-    pid[AliAODCaloCluster::kUnknown] = 1.;
+    pid[AliVCluster::kUnknown] = 1.;
     calo->SetPID(pid);
  }