]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGHF/hfe/AliHFEdebugTreeTaskAOD.cxx
add EMCal trigger in eh analysis. add hists. in Raa study
[u/mrichter/AliRoot.git] / PWGHF / hfe / AliHFEdebugTreeTaskAOD.cxx
index a96b687fd6cb60e249a798b2ff926f08cbcb0f7b..cf5f692e0471784ce61a77108ca8d92d07641eb8 100644 (file)
 #include <TBits.h>
 #include <TString.h>
 #include <TArrayI.h>
-#include <TTree.h>
 
 #include "AliAnalysisManager.h"
 #include "AliCentrality.h"
 #include "AliAODTrack.h"
 #include "AliAODEvent.h"
+#include "AliAODPid.h"
 #include "AliHFEcuts.h"
 #include "AliHFEextraCuts.h"
 #include "AliInputEventHandler.h"
@@ -60,35 +60,7 @@ AliHFEdebugTreeTaskAOD::AliHFEdebugTreeTaskAOD():
   fNclustersTPCPID(0),
   fNclustersITS(2),
   fFilename("HFEtree.root"),
-  fDebugstream(kFALSE),
-  fDebugTree(NULL),
-  fDebugTreee(NULL),
-  fCentrality(-1.),
-  fRun(-1),
-  fDoublec(0),
-  fMomentum(0.),
-  fMomentumTPC(0.),
-  fTransverseMomentum(0.),
-  fEta(0.),
-  fPhi(0.),
-  fCharge(-1),
-  fNClustersTPCall(0),
-  fNClustersTPCPID(0),
-  fNClustersTPCshared(0),
-  fNCrossedRowsTPC(0),
-  fClusterRatioTPCall(0.),
-  fNClustersITS(0),
-  fStatusL0(-1),
-  fStatusL1(-1),
-  fSigmaTOF(0.),
-  fSigmaTPC(0.),
-  fDcaxy(0.),
-  fDcaz(0.),
-  fFilter2(0),
-  fFilter4(0),
-  fSource(-1),
-  fEr(0.0),
-  fSignal(0.)
+  fDebugTree(NULL)
 {
 
 }
@@ -106,45 +78,15 @@ AliHFEdebugTreeTaskAOD::AliHFEdebugTreeTaskAOD(const char *name):
   fNclustersTPCPID(0),
   fNclustersITS(2),
   fFilename("HFEtree.root"),
-  fDebugstream(kFALSE),
-  fDebugTree(NULL),
-  fDebugTreee(NULL),
-  fCentrality(-1.),
-  fRun(-1),
-  fDoublec(0),
-  fMomentum(0.),
-  fMomentumTPC(0.),
-  fTransverseMomentum(0.),
-  fEta(0.),
-  fPhi(0.),
-  fCharge(-1),
-  fNClustersTPCall(0),
-  fNClustersTPCPID(0),
-  fNClustersTPCshared(0),
-  fNCrossedRowsTPC(0),
-  fClusterRatioTPCall(0.),
-  fNClustersITS(0),
-  fStatusL0(-1),
-  fStatusL1(-1),
-  fSigmaTOF(0.),
-  fSigmaTPC(0.),
-  fDcaxy(0.),
-  fDcaz(0.),
-  fFilter2(0),
-  fFilter4(0),
-  fSource(-1),
-  fEr(0.0),
-  fSignal(0.)
+  fDebugTree(NULL)
 {
   fTPCpid = new AliHFEpidTPC("QAtpcPID");
-  DefineOutput(1, TTree::Class());
 }
 
 AliHFEdebugTreeTaskAOD::~AliHFEdebugTreeTaskAOD(){
 
     if(fDebugTree) delete fDebugTree;
     if(fTPCpid) delete fTPCpid;
-    //if(fDebugTreee) delete fDebugTreee;
 }
 
 void AliHFEdebugTreeTaskAOD::UserCreateOutputObjects(){
@@ -153,40 +95,7 @@ void AliHFEdebugTreeTaskAOD::UserCreateOutputObjects(){
   //
 
   //printf("test\n");
-  if(fDebugstream) {
-    fDebugTree = new TTreeSRedirector(fFilename.Data());
-  }
-  else {
-    // other possibility
-    fDebugTreee =  new TTree("PIDdebug","PIDdebug");
-    fDebugTreee->Branch("centrality",&fCentrality);
-    fDebugTreee->Branch("run",&fRun);
-    fDebugTreee->Branch("doublec",&fDoublec);
-    fDebugTreee->Branch("p",&fMomentum);
-    fDebugTreee->Branch("ptpc",&fMomentumTPC);
-    fDebugTreee->Branch("pt",&fTransverseMomentum);
-    fDebugTreee->Branch("eta",&fEta);
-    fDebugTreee->Branch("phi",&fPhi);
-    fDebugTreee->Branch("charge",&fCharge);
-    fDebugTreee->Branch("nclustersTPCall",&fNClustersTPCall);
-    fDebugTreee->Branch("nclustersTPCPID",&fNClustersTPCPID);
-    fDebugTreee->Branch("nclustersTPCshared",&fNClustersTPCshared);
-    fDebugTreee->Branch("nCrossedRowsTPC",&fNCrossedRowsTPC);
-    fDebugTreee->Branch("clusterRatioTPCall",&fClusterRatioTPCall);
-    fDebugTreee->Branch("nclustersITS",&fNClustersITS);
-    fDebugTreee->Branch("statusL0",&fStatusL0);
-    fDebugTreee->Branch("statusL1",&fStatusL1);
-    fDebugTreee->Branch("sigmaTOF",&fSigmaTOF);
-    fDebugTreee->Branch("sigmaTPC",&fSigmaTPC);
-    fDebugTreee->Branch("dcaxy",&fDcaxy);
-    fDebugTreee->Branch("dcaz",&fDcaz);
-    fDebugTreee->Branch("filter2",&fFilter2);
-    fDebugTreee->Branch("filter4",&fFilter4);
-    fDebugTreee->Branch("source",&fSource);
-    fDebugTreee->Branch("eR",&fEr);
-    fDebugTreee->Branch("signal",&fSignal);
-    PostData(1,fDebugTreee);
-  }
+  fDebugTree = new TTreeSRedirector(fFilename.Data());
 
  // printf("testa\n");
   fSignalCuts = new AliHFEsignalCuts("HFEsignalCuts", "HFE MC Signal definition");
@@ -236,6 +145,8 @@ void AliHFEdebugTreeTaskAOD::UserExec(Option_t *){
     return;
   }
 
+  AliAODTrack copyTrack;
+
   // MC info
   Bool_t mcthere = kTRUE;
   AliAODEvent *aodE = dynamic_cast<AliAODEvent *>(fInputEvent);
@@ -271,9 +182,12 @@ void AliHFEdebugTreeTaskAOD::UserExec(Option_t *){
   }
   fExtraCuts->SetRecEventInfo(fInputEvent);
 
+
   // Get run number
-  fRun = fInputEvent->GetRunNumber();
-  
+  Int_t run = fInputEvent->GetRunNumber();
+
   // Derive trigger 
   UInt_t trigger = fInputHandler->IsEventSelected();
   Bool_t isMBTrigger = trigger & AliVEvent::kMB;
@@ -288,10 +202,19 @@ void AliHFEdebugTreeTaskAOD::UserExec(Option_t *){
   Double_t ncontrib = fInputEvent->GetPrimaryVertex()->GetNContributors();
 
   // Get centrality
-  fCentrality = -1.;
+  Float_t centrality = -1.;
   AliCentrality *hicent = fInputEvent->GetCentrality();
-  fCentrality = hicent->GetCentralityPercentile("V0M");
-  
+  centrality = hicent->GetCentralityPercentile("V0M");
+
+  // Store event selection variables
+  (*fDebugTree) << "EventDebug"
+                << "Centrality="              << centrality
+                << "VertexZ="                 << vtx[2]
+                << "NumberOfContributors="    << ncontrib
+                << "run="                 << run
+                << "\n";
+
+
 
   // Look for kink mother
   Int_t numberofvertices = aodE->GetNumberOfVertices();
@@ -313,38 +236,112 @@ void AliHFEdebugTreeTaskAOD::UserExec(Option_t *){
     }
   }
   //printf("Number of kink mother in the events %d\n",numberofmotherkink);
+
+  //
+  // Loop on MC tracks only
+  //
+  AliAODMCParticle *mctrack = NULL;
+  // Monte-Carlo info
+  Double_t eR,vx,vy,vz;
+  Double_t chargemc, etamc, phimc, momentummc, transversemomentummc;
+  Int_t source,pdg,signal;
+  if(mcthere) {
+    for(Int_t itrack = 0; itrack < fAODArrayMCInfo->GetEntriesFast(); itrack++) {
+      mctrack = (AliAODMCParticle *)(fAODArrayMCInfo->At(itrack));
+      if(!mctrack) continue;
+      signal = 0;
+      if(fTrackCuts->CheckParticleCuts(static_cast<UInt_t>(AliHFEcuts::kStepMCGenerated), mctrack)) signal = 1;
+      // Kinematics
+      chargemc = mctrack->Charge() > 0. ? 1. : -1.;
+      momentummc = mctrack->P() * chargemc;
+      transversemomentummc = mctrack->Pt() * chargemc;
+      etamc = mctrack->Eta();
+      phimc = mctrack->Phi();
+      pdg = mctrack->GetPdgCode();
+      
+      // Get Production Vertex in radial direction
+      vx = mctrack->Xv();
+      vy = mctrack->Yv(); 
+      vz = mctrack->Zv(); 
+      eR = TMath::Sqrt(vx*vx+vy*vy);
+
+      // Get Mother PDG code of the particle
+      Int_t motherPdg = 0;
+      Int_t motherlabel = TMath::Abs(mctrack->GetMother());
+      if(motherlabel >= 0 && motherlabel < fAODArrayMCInfo->GetEntriesFast()){
+        AliAODMCParticle *mother = dynamic_cast<AliAODMCParticle *>(fAODArrayMCInfo->At(motherlabel));
+        if(mother) motherPdg = mother->GetPdgCode();
+      }
+      
+      // derive source
+      source = 5;
+      if(fSignalCuts->IsCharmElectron(mctrack)) source = 0;
+      else if(fSignalCuts->IsBeautyElectron(mctrack)) source = 1;
+      else if(fSignalCuts->IsGammaElectron(mctrack)) source = 2;
+      else if(fSignalCuts->IsNonHFElectron(mctrack)) source = 3;
+      else if(TMath::Abs(pdg) == 11) source = 4;
+      else source = 5;
+
+      (*fDebugTree) << "MCDebug"
+                    << "centrality="          << centrality
+                    << "MBtrigger="           << isMBTrigger 
+                    << "CentralTrigger="      << isCentralTrigger
+                    << "SemicentralTrigger="  << isSemicentralTrigger
+                    << "EMCALtrigger="        << isEMCALTrigger
+                    << "run="                 << run
+                    << "p="                   << momentummc
+                    << "pt="                  << transversemomentummc
+                    << "eta="                 << etamc
+                    << "phi="                 << phimc
+                    << "pdg="                 << pdg
+                   << "px="                  << vx
+                   << "py="                  << vy
+                   << "pz="                  << vz
+                    << "ProductionVertex="    << eR
+                    << "motherPdg="           << motherPdg
+                    << "source="              << source
+                    << "\n";
+    }
+  }
   
   // Common variables
-  //Double_t charge, eta, phi, momentum, momentumTPC, transversemomentum;
-
+  Double_t charge, eta, phi, momentum, momentumTPC, transversemomentum;
+  
   //
   // Loop on reconstructed tracks
   //
 
   TArrayI *arraytrack = new TArrayI(fInputEvent->GetNumberOfTracks());
+  Int_t counterdc=0;
   
   AliAODTrack *track = 0x0;
-  AliAODMCParticle *mctrack = NULL;
   for(Int_t itrack = 0; itrack < fInputEvent->GetNumberOfTracks(); itrack++){
     // fill the tree
     track = dynamic_cast<AliAODTrack *>(fInputEvent->GetTrack(itrack));
     if(!track) continue;
     // Cut track (Only basic track cuts)
-//    printf("testv\n");
+    // printf("testv\n");
     if(!fTrackCuts->CheckParticleCuts(AliHFEcuts::kNcutStepsMCTrack + AliHFEcuts::kStepRecKineITSTPC, track)) continue;
     //
     //printf("testu\n");
-    fSigmaTOF = pid->NumberOfSigmasTOF(track, AliPID::kElectron);
-    fSigmaTPC = pid->NumberOfSigmasTPC(track, AliPID::kElectron);
+    Double_t nSigmaTOF = pid->NumberOfSigmasTOF(track, AliPID::kElectron);
+    Double_t nSigmaTPC = pid->NumberOfSigmasTPC(track, AliPID::kElectron);
     Double_t tPCdEdx = track->GetDetPid() ? track->GetDetPid()->GetTPCsignal() : 0.;
+    // Eta correction
+    copyTrack.~AliAODTrack();
+    new(&copyTrack) AliAODTrack(*track);
+    if(fTPCpid->HasCentralityCorrection()) fTPCpid->ApplyCentralityCorrection(&copyTrack, static_cast<Double_t>(ncontrib),AliHFEpidObject::kAODanalysis);
+    if(fTPCpid->HasEtaCorrection()) fTPCpid->ApplyEtaCorrection(&copyTrack, AliHFEpidObject::kAODanalysis);
+    Double_t nSigmaTPCcorr = pid->NumberOfSigmasTPC(&copyTrack, AliPID::kElectron);
+    Double_t tPCdEdxcorr = copyTrack.GetDetPid() ? copyTrack.GetDetPid()->GetTPCsignal() : 0.;
    
     // Kinematics
-    fCharge = track->Charge() > 0 ? 1. : -1.;
-    fEta = track->Eta();
-    fPhi = track->Phi();
-    fMomentum = track->P() * fCharge;
-    fTransverseMomentum = track->Pt() * fCharge;
-    fMomentumTPC = track->GetDetPid() ? track->GetDetPid()->GetTPCmomentum() : track->P();
+    charge = track->Charge() > 0 ? 1. : -1.;
+    eta = track->Eta();
+    phi = track->Phi();
+    momentum = track->P() * charge;
+    transversemomentum = track->Pt() * charge;
+    momentumTPC = track->GetDetPid() ? track->GetDetPid()->GetTPCmomentum() : track->P();
   
     // status
     ULong_t status = track->GetStatus();
@@ -352,40 +349,63 @@ void AliHFEdebugTreeTaskAOD::UserExec(Option_t *){
     if((status & AliESDtrack::kITSrefit) == AliESDtrack::kITSrefit) itsrefit = 1;
     Int_t tpcrefit=0;
     if((status & AliESDtrack::kTPCrefit) == AliESDtrack::kTPCrefit) tpcrefit = 1;
+    Int_t tofpid=0;
+    if((status & AliESDtrack::kTOFpid) == AliESDtrack::kTOFpid) tofpid = 1;
 
     // ITS number of clusters
-    fNClustersITS = (Int_t) track->GetITSNcls();
+    UChar_t nclustersITS = track->GetITSNcls();
     // TPC number of clusters (different definitions)
     UChar_t nclustersTPCfit = track->GetTPCNcls();
-    //UChar_t nclustersTPCall = 0;
+    UChar_t nclustersTPCall = 0;
     const TBits &clusterTPC = track->GetTPCClusterMap();
-    fNClustersTPCall = (Int_t) clusterTPC.CountBits();
-    fNClustersTPCPID = (Int_t) track->GetTPCsignalN();
+    nclustersTPCall = clusterTPC.CountBits();
+    UChar_t nclustersTPCPID = track->GetTPCsignalN();
     UChar_t nfindableTPC =  track->GetTPCNclsF();
     Double_t clusterRatioTPCfit = 0.0;
     if((static_cast<Double_t>(nfindableTPC))>0.0) clusterRatioTPCfit = static_cast<Double_t>(nclustersTPCfit)/static_cast<Double_t>(nfindableTPC);
-    //Double_t clusterRatioTPCall = 0.0;
-    if((static_cast<Double_t>(nfindableTPC))>0.0) fClusterRatioTPCall = static_cast<Float_t>(fNClustersTPCall)/static_cast<Float_t>(nfindableTPC);
-    fNClustersTPCshared = 0;
-    fNCrossedRowsTPC = (Int_t) track->GetTPCNCrossedRows();
+    Double_t clusterRatioTPCall = 0.0;
+    if((static_cast<Double_t>(nfindableTPC))>0.0) clusterRatioTPCall = static_cast<Double_t>(nclustersTPCall)/static_cast<Double_t>(nfindableTPC);
+    UChar_t nclustersTPCshared = 0;
+    Float_t ncrossedRowsTPC = track->GetTPCNCrossedRows();
     const TBits &sharedTPC = track->GetTPCSharedMap();
-    for(Int_t ibit = 0; ibit < 160; ibit++) if(sharedTPC.TestBitNumber(ibit)) fNClustersTPCshared++;
+    for(Int_t ibit = 0; ibit < 160; ibit++) if(sharedTPC.TestBitNumber(ibit)) nclustersTPCshared++;
     // TRD clusters and tracklets
     UChar_t nclustersTRD = track->GetTRDncls();
     UChar_t ntrackletsTRDPID = track->GetTRDntrackletsPID();
-    Int_t   nslicesTRD = track->GetNumberOfTRDslices();
+    Int_t   nslicesTRD = track->GetDetPid()->GetTRDnSlices();
     Int_t   chi2TRD = track->GetTRDchi2();
+    AliAODPid* aodpid= track->GetDetPid();
+    Double_t* arraytrdsignals;
+    arraytrdsignals=aodpid->GetTRDslices();
+    Int_t nslicetemp=0;
+    Int_t trdlayer[6];
+    for(Int_t iplane = 0; iplane < 6; iplane++){
+       trdlayer[iplane]=0;
+    }
+
+    for(Int_t iplane = 0; iplane < 6; iplane++){
+       nslicetemp=0;
+       for(Int_t b=(iplane*8);b<((iplane*8)+8);b++)
+       {
+           if(ntrackletsTRDPID>0)
+           {
+               if(arraytrdsignals[b]>0.001) nslicetemp++;
+           }
+       }
+       if(nslicetemp > 0) trdlayer[iplane]=1;
+    }
+
     // ITS and TRD acceptance maps
     UChar_t itsPixel = track->GetITSClusterMap();
-    fStatusL0 = 0;
-    if(TESTBIT(itsPixel, 0)) fStatusL0 = 1
-    fStatusL1 = 0;
-    if(TESTBIT(itsPixel, 1)) fStatusL1 = 1
+    Bool_t statusL0 = kFALSE;
+    if(TESTBIT(itsPixel, 0)) statusL0 = kTRUE
+    Bool_t statusL1 = kFALSE;
+    if(TESTBIT(itsPixel, 1)) statusL1 = kTRUE
 
     // HFE DCA
-    fDcaxy = -999.;
-    fDcaz = -999.;
-    fExtraCuts->GetImpactParameters((AliVTrack *)track,fDcaxy,fDcaz);
+    Float_t dcaxy = -999.;
+    Float_t dcaz = -999.;
+    fExtraCuts->GetImpactParameters((AliVTrack *)track,dcaxy,dcaz);
 
     // Kink
     Int_t kink = 0;
@@ -404,15 +424,16 @@ void AliHFEdebugTreeTaskAOD::UserExec(Option_t *){
     Int_t id = track->GetID();
 
     // Double counted
-    fDoublec = 0;
-    for(Int_t l=0; l < itrack; l++){
+    Int_t doublec = 0;
+    for(Int_t l=0; l < counterdc; l++){
       Int_t iTrack2 = arraytrack->At(l);
-      if(iTrack2==id) fDoublec=1;
+      if(iTrack2==id) doublec=1;
     }
     //printf("Doublec %d\n",doublec);
 
     // Add the id at this place
-    arraytrack->AddAt(id,itrack);
+    arraytrack->AddAt(id,counterdc);
+    counterdc++;
 
     // Filter
     Int_t filter[20];
@@ -425,9 +446,9 @@ void AliHFEdebugTreeTaskAOD::UserExec(Option_t *){
     }
     Int_t filter0 = filter[0];
     Int_t filter1 = filter[1];
-    fFilter2 = filter[2];
+    Int_t filter2 = filter[2];
     Int_t filter3 = filter[3];
-    fFilter4 = filter[4];
+    Int_t filter4 = filter[4];
     Int_t filter5 = filter[5];
     Int_t filter6 = filter[6];
     Int_t filter7 = filter[7];
@@ -448,19 +469,13 @@ void AliHFEdebugTreeTaskAOD::UserExec(Option_t *){
 
     //printf("track\n");
 
-    // Monte-Carlo info
-    Double_t vx,vy,vz;
-    fEr = 0.0;
-    Double_t chargemc, etamc, phimc, momentummc, transversemomentummc;
-    Int_t pdg;
-    fSignal = 0;
-    fSource = 0;
+    signal = 0;
     if(mcthere){
       Int_t label = TMath::Abs(track->GetLabel());
       if(label && label < fAODArrayMCInfo->GetEntriesFast())
         mctrack = dynamic_cast<AliAODMCParticle *>(fAODArrayMCInfo->At(label));
       if(!mctrack) continue;
-      if(fTrackCuts->CheckParticleCuts(static_cast<UInt_t>(AliHFEcuts::kStepMCGenerated), mctrack)) fSignal = 1;
+      if(fTrackCuts->CheckParticleCuts(static_cast<UInt_t>(AliHFEcuts::kStepMCGenerated), mctrack)) signal = 1;
       // Kinematics
       chargemc = mctrack->Charge() > 0. ? 1. : -1.;
       momentummc = mctrack->P() * chargemc;
@@ -473,7 +488,7 @@ void AliHFEdebugTreeTaskAOD::UserExec(Option_t *){
       vx = mctrack->Xv();
       vy = mctrack->Yv(); 
       vz = mctrack->Zv(); 
-      fEr = TMath::Sqrt(vx*vx+vy*vy);
+      eR = TMath::Sqrt(vx*vx+vy*vy);
       
       // Get Mother PDG code of the particle
       Int_t motherPdg = 0;
@@ -484,100 +499,105 @@ void AliHFEdebugTreeTaskAOD::UserExec(Option_t *){
       }
       
       // derive source
-      fSource = 5;
-      if(fSignalCuts->IsCharmElectron(mctrack)) fSource = 0;
-      else if(fSignalCuts->IsBeautyElectron(mctrack)) fSource = 1;
-      else if(fSignalCuts->IsGammaElectron(mctrack)) fSource = 2;
-      else if(fSignalCuts->IsNonHFElectron(mctrack)) fSource = 3;
-      else if(TMath::Abs(pdg) == 11) fSource = 4;
-      else fSource = 5;
+      source = 5;
+      if(fSignalCuts->IsCharmElectron(mctrack)) source = 0;
+      else if(fSignalCuts->IsBeautyElectron(mctrack)) source = 1;
+      else if(fSignalCuts->IsGammaElectron(mctrack)) source = 2;
+      else if(fSignalCuts->IsNonHFElectron(mctrack)) source = 3;
+      else if(TMath::Abs(pdg) == 11) source = 4;
+      else source = 5;
       
     }
 
     
     // Fill Tree
     //printf("Fill\n");
-    if(fDebugstream) {
-      (*fDebugTree) << "PIDdebug"
-                   << "centrality="          << fCentrality
-                   << "MBtrigger="           << isMBTrigger 
-                   << "CentralTrigger="      << isCentralTrigger
-                   << "SemicentralTrigger="  << isSemicentralTrigger
-                   << "EMCALtrigger="        << isEMCALTrigger
-                   << "run="                 << fRun
-                   << "eventnb="             << eventnb
-                   << "vx="                  << vtx[0]
-                   << "vy="                  << vtx[1]
-                   << "vz="                  << vtx[2]
-                   << "ncontrib="            << ncontrib
-                   << "id="                  << id
-                   << "dc="                  << fDoublec
-                   << "p="                   << fMomentum
-                   << "ptpc="                << fMomentumTPC
-                   << "pt="                  << fTransverseMomentum
-                   << "eta="                 << fEta
-                   << "phi="                 << fPhi
-                   << "charge="              << fCharge
-                   << "itsrefit="            << itsrefit
-                   << "tpcrefit="            << tpcrefit
-                   << "nclustersTPC="        << nclustersTPCfit
-                   << "nclustersTPCall="     << fNClustersTPCall
-                   << "nclustersTPCPID="     << fNClustersTPCPID
-                   << "nclustersTPCshared="  << fNClustersTPCshared
-                   << "ncrossedRowsTPC="     << fNCrossedRowsTPC
-                   << "clusterRatioTPC="     << clusterRatioTPCfit
-                   << "clusterRatioTPCall="  << fClusterRatioTPCall
-                   << "nclustersITS="        << fNClustersITS
-                   << "nclustersTRD="        << nclustersTRD
-                   << "ntrackletsTRD="       << ntrackletsTRDPID
-                   << "nslicesTRD="          << nslicesTRD
-                   << "chi2TRD="             << chi2TRD
-                   << "statusITS0="          << fStatusL0
-                   << "statusITS1="          << fStatusL1
-                   << "TOFsigmaEl="          << fSigmaTOF
-                   << "TPCsigmaEl="          << fSigmaTPC
-                   << "TPCdEdx="             << tPCdEdx
-                   << "dcaR="                << fDcaxy
-                   << "dcaZ="                << fDcaz
-                   << "kinkdaughter="        << kink
-                   << "kinkmother="          << kinkmotherpass
-                   << "nbofmotherkink="      << numberofmotherkink
-                   << "filter0="             << filter0
-                   << "filter1="             << filter1
-                   << "filter2="             << fFilter2
-                   << "filter3="             << filter3
-                   << "filter4="             << fFilter4
-                   << "filter5="             << filter5
-                   << "filter6="             << filter6
-                   << "filter7="             << filter7
-                   << "filter8="             << filter8
-                   << "filter9="             << filter9
-                   << "filter10="            << filter10
-                   << "filter11="            << filter11
-                   << "filter12="            << filter12
-                   << "filter13="            << filter13
-                   << "filter14="            << filter14
-                   << "filter15="            << filter15
-                   << "filter16="            << filter16
-                   << "filter17="            << filter17
-                   << "filter18="            << filter18
-                   << "filter19="            << filter19
-                   << "mcp="                 << momentummc
-                   << "mcpt="                << transversemomentummc
-                   << "mceta="               << etamc
-                   << "mcphi="               << phimc
-                   << "mcpdg="               << pdg
-                   << "source="              << fSource
-                   << "px="                  << vx
-                   << "py="                  << vy
-                   << "pz="                  << vz
-                   << "eR="                  << fEr
-                   << "mccharge="            << chargemc
-                   << "signal="              << fSignal
-                   << "\n";
-    } else {
-      if((fFilter2==1) || (fFilter4==1)) fDebugTreee->Fill();
-    }
+    (*fDebugTree) << "PIDdebug"
+                  << "centrality="          << centrality
+                  << "MBtrigger="           << isMBTrigger 
+                  << "CentralTrigger="      << isCentralTrigger
+                  << "SemicentralTrigger="  << isSemicentralTrigger
+                  << "EMCALtrigger="        << isEMCALTrigger
+                 << "run="                 << run
+                 << "eventnb="             << eventnb
+                 << "vx="                  << vtx[0]
+                  << "vy="                  << vtx[1]
+                  << "vz="                  << vtx[2]
+                 << "ncontrib="            << ncontrib
+                 << "id="                  << id
+                 << "dc="                  << doublec
+                  << "p="                   << momentum
+                 << "ptpc="                << momentumTPC
+                 << "pt="                  << transversemomentum
+                 << "eta="                 << eta
+                  << "phi="                 << phi
+                 << "itsrefit="            << itsrefit
+                 << "tpcrefit="            << tpcrefit
+                 << "tofpid="              << tofpid
+                 << "nclustersTPC="        << nclustersTPCfit
+                 << "nclustersTPCall="     << nclustersTPCall
+                  << "nclustersTPCPID="     << nclustersTPCPID
+                  << "nclustersTPCshared="  << nclustersTPCshared
+                  << "ncrossedRowsTPC="     << ncrossedRowsTPC
+                  << "clusterRatioTPC="     << clusterRatioTPCfit
+                 << "clusterRatioTPCall="  << clusterRatioTPCall
+                  << "nclustersITS="        << nclustersITS
+                 << "nclustersTRD="        << nclustersTRD
+                 << "ntrackletsTRD="       << ntrackletsTRDPID
+                 << "nslicesTRD="          << nslicesTRD
+                  << "trd0="                << trdlayer[0]
+                  << "trd1="                << trdlayer[1]
+                  << "trd2="                << trdlayer[2]
+                  << "trd3="                << trdlayer[3]
+                  << "trd4="                << trdlayer[4]
+                  << "trd5="                << trdlayer[5]
+                  << "chi2TRD="             << chi2TRD
+                 << "statusITS0="          << statusL0
+                  << "statusITS1="          << statusL1
+                 << "TOFsigmaEl="          << nSigmaTOF
+                  << "TPCsigmaEl="          << nSigmaTPC
+                 << "TPCsigmaElcorr="      << nSigmaTPCcorr
+                  << "TPCdEdx="             << tPCdEdx
+                  << "TPCdEdxcorr="         << tPCdEdxcorr
+                 << "dcaR="                << dcaxy
+                  << "dcaZ="                << dcaz
+                 << "kinkdaughter="        << kink
+                 << "kinkmother="          << kinkmotherpass
+                 << "nbofmotherkink="      << numberofmotherkink
+                 << "filter0="             << filter0
+                 << "filter1="             << filter1
+                 << "filter2="             << filter2
+                 << "filter3="             << filter3
+                 << "filter4="             << filter4
+                 << "filter5="             << filter5
+                 << "filter6="             << filter6
+                 << "filter7="             << filter7
+                 << "filter8="             << filter8
+                 << "filter9="             << filter9
+                 << "filter10="            << filter10
+                 << "filter11="            << filter11
+                 << "filter12="            << filter12
+                 << "filter13="            << filter13
+                 << "filter14="            << filter14
+                 << "filter15="            << filter15
+                 << "filter16="            << filter16
+                 << "filter17="            << filter17
+                 << "filter18="            << filter18
+                 << "filter19="            << filter19
+                 << "mcp="                 << momentummc
+                  << "mcpt="                << transversemomentummc
+                 << "mceta="               << etamc
+                  << "mcphi="               << phimc
+                  << "mcpdg="               << pdg
+                 << "source="              << source
+                 << "px="                  << vx
+                  << "py="                  << vy
+                  << "pz="                  << vz
+                 << "eR="                  << eR
+                 << "mccharge="            << chargemc
+                 << "signal="              << signal
+                 << "\n";
+
  
     //printf("after\n");
 
@@ -586,8 +606,6 @@ void AliHFEdebugTreeTaskAOD::UserExec(Option_t *){
   arraytrack->~TArrayI();
   fEventNumber++;
 
-  if(!fDebugstream) PostData(1,fDebugTreee);
-
 
 }