cuts for TOF requirements for MC corrections (Leonardo)
authorjgrosseo <jgrosseo@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 4 Mar 2013 11:17:29 +0000 (11:17 +0000)
committerjgrosseo <jgrosseo@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 4 Mar 2013 11:17:29 +0000 (11:17 +0000)
PWGCF/Correlations/Base/AliAnalyseLeadingTrackUE.cxx
PWGCF/Correlations/Base/AliAnalyseLeadingTrackUE.h
PWGCF/Correlations/Base/AliUEHistograms.cxx
PWGCF/Correlations/Base/AliUEHistograms.h
PWGCF/Correlations/DPhi/AliAnalysisTaskPhiCorrelations.cxx
PWGCF/Correlations/DPhi/AliAnalysisTaskPhiCorrelations.h

index 5d95483..e3b68f5 100644 (file)
@@ -74,6 +74,7 @@ AliAnalyseLeadingTrackUE::AliAnalyseLeadingTrackUE() :
   TObject(),
   fDebug(0),
   fFilterBit(16),
+  fTrackStatus(0),
   fOnlyHadrons(kFALSE),
   fTrackEtaCut(0.8),
   fTrackPtMin(0),
@@ -693,11 +694,11 @@ AliVParticle*  AliAnalyseLeadingTrackUE::ParticleWithCuts(TObject* obj, Int_t ip
   }else if (obj->InheritsFrom("AliAODEvent")){ // RECO AOD TRACKS
        AliAODEvent *aodEvent = static_cast<AliAODEvent*>(obj);
         part = aodEvent->GetTrack(ipart);
+       
        // track selection cuts
        if ( !(((AliAODTrack*)part)->TestFilterBit(fFilterBit)) ) return 0; 
-       //if ( !(((AliAODTrack*)part)->TestFilterBit(fFilterBit)) && !(((AliAODTrack*)part)->TestFilterBit(32)) ) return 0; 
-       // only primary candidates
-       //if ( ((AliAODTrack*)part)->IsPrimaryCandidate() )return 0;
+       if (fTrackStatus != 0 && !CheckTrack(part)) return 0;
+
        // eventually only hadrons
        if (fOnlyHadrons){
                Bool_t isHadron = ((AliAODTrack*)part)->GetMostProbablePID()==AliAODTrack::kPion ||
@@ -712,11 +713,13 @@ AliVParticle*  AliAnalyseLeadingTrackUE::ParticleWithCuts(TObject* obj, Int_t ip
        AliESDEvent *esdEvent = static_cast<AliESDEvent*>(obj);
         part = esdEvent->GetTrack(ipart);
        if (!part)return 0;
+
        // track selection cuts
-       
        if (!( ApplyCuts(part)) )
-        return 0; 
+         return 0; 
        
+       if (fTrackStatus != 0 && !CheckTrack(part)) return 0;
+
        if (fFilterBit == 128 || fFilterBit == 256 || fFilterBit == 512 || fFilterBit == 1024)
        {
          // create TPC only tracks constrained to the SPD vertex
@@ -1004,3 +1007,15 @@ Bool_t  AliAnalyseLeadingTrackUE::VertexSelection(const TObject* obj, Int_t ntra
        
   return kTRUE;
 }
+
+//____________________________________________________________________
+
+Bool_t AliAnalyseLeadingTrackUE::CheckTrack(AliVParticle * part)
+{
+  // check if the track status flags are set
+  
+  UInt_t status=((AliVTrack*)part)->GetStatus();
+  if ((status & fTrackStatus) == fTrackStatus)
+    return kTRUE;
+  return kFALSE;
+}
index 335d8b9..9fe73c5 100644 (file)
@@ -46,6 +46,7 @@ class AliAnalyseLeadingTrackUE : public TObject {
                                                                                             fOnlyHadrons = onlyhadrons;
                                                                                             fTrackEtaCut = etacut;     
                                                                                             fTrackPtMin = ptMin;}
+
   void SetEventSelection(UInt_t bits) { fEventSelection = bits; }
   void  SetDebug(Int_t debug) { fDebug = debug; } 
   Bool_t         ApplyCuts(TObject* track);                       // Reproduces the cuts of the corresponding bit in the ESD->AOD filtering
@@ -64,10 +65,16 @@ class AliAnalyseLeadingTrackUE : public TObject {
   void                  RemoveWeakDecays(TObjArray* tracks, TObject* mcObj);
   AliHelperPID*  GetHelperPID() { return fHelperPID; }
   void                  SetHelperPID(AliHelperPID* pid) { fHelperPID = pid; }
-  
+  void          SetTrackStatus(UInt_t status) { fTrackStatus = status; }
+  UInt_t        GetTrackStatus() { return fTrackStatus; }
+
+protected:
+  Bool_t CheckTrack(AliVParticle * part);
+
 private:
   Int_t          fDebug;             // debug flag
   Int_t          fFilterBit;         // track selection cuts
+  UInt_t         fTrackStatus;       // if non-0, the bits set in this variable are required for each track
   Bool_t         fOnlyHadrons;       // consider only charged Pions, Protons and Kaons 
   Double_t       fTrackEtaCut;       // pseudo-rapidity limit of transverse regions     
   Double_t       fTrackPtMin;        // pt limit for selecting particles
index f934f76..6e74257 100644 (file)
@@ -59,8 +59,8 @@ AliUEHistograms::AliUEHistograms(const char* name, const char* histograms, const
   fCentralityCorrelation(0),
   fITSClusterMap(0),
   fControlConvResoncances(0),
-  fEfficiencyCorrection(0),
-  fCorrectTriggers(kFALSE),
+  fEfficiencyCorrectionTriggers(0),
+  fEfficiencyCorrectionAssociated(0),
   fSelectCharge(0),
   fTriggerSelectCharge(0),
   fAssociatedSelectCharge(0),
@@ -228,8 +228,8 @@ AliUEHistograms::AliUEHistograms(const AliUEHistograms &c) :
   fCentralityCorrelation(0),
   fITSClusterMap(0),
   fControlConvResoncances(0),
-  fEfficiencyCorrection(0),
-  fCorrectTriggers(kFALSE),
+  fEfficiencyCorrectionTriggers(0),
+  fEfficiencyCorrectionAssociated(0),
   fSelectCharge(0),
   fTriggerSelectCharge(0),
   fAssociatedSelectCharge(0),
@@ -371,10 +371,16 @@ void AliUEHistograms::DeleteContainers()
     fControlConvResoncances = 0;
   }
     
-  if (fEfficiencyCorrection)
+  if (fEfficiencyCorrectionTriggers)
   {
-    delete fEfficiencyCorrection;
-    fEfficiencyCorrection = 0;
+    delete fEfficiencyCorrectionTriggers;
+    fEfficiencyCorrectionTriggers = 0;
+  }
+  
+  if (fEfficiencyCorrectionAssociated)
+  {
+    delete fEfficiencyCorrectionAssociated;
+    fEfficiencyCorrectionAssociated = 0;
   }
 }
 
@@ -759,29 +765,33 @@ void AliUEHistograms::FillCorrelations(Double_t centrality, Float_t zVtx, AliUEH
          weight = particle->Pt();
        
        Double_t useWeight = weight;
-       if (fEfficiencyCorrection && applyEfficiency)
+       if (applyEfficiency)
        {
-         Int_t effVars[4];
-         
-         // associated particle
-         effVars[0] = fEfficiencyCorrection->GetAxis(0)->FindBin(eta[j]);
-         effVars[1] = fEfficiencyCorrection->GetAxis(1)->FindBin(vars[1]); //pt
-         effVars[2] = fEfficiencyCorrection->GetAxis(2)->FindBin(vars[3]); //centrality
-         effVars[3] = fEfficiencyCorrection->GetAxis(3)->FindBin(vars[5]); //zVtx
-         
-//       Printf("%d %d %d %d %f", effVars[0], effVars[1], effVars[2], effVars[3], fEfficiencyCorrection->GetBinContent(effVars));
-         
-         useWeight *= fEfficiencyCorrection->GetBinContent(effVars);
+         if (fEfficiencyCorrectionAssociated)
+         {
+           Int_t effVars[4];
+           // associated particle
+           effVars[0] = fEfficiencyCorrectionAssociated->GetAxis(0)->FindBin(eta[j]);
+           effVars[1] = fEfficiencyCorrectionAssociated->GetAxis(1)->FindBin(vars[1]); //pt
+           effVars[2] = fEfficiencyCorrectionAssociated->GetAxis(2)->FindBin(vars[3]); //centrality
+           effVars[3] = fEfficiencyCorrectionAssociated->GetAxis(3)->FindBin(vars[5]); //zVtx
+           
+           //    Printf("%d %d %d %d %f", effVars[0], effVars[1], effVars[2], effVars[3], fEfficiencyCorrectionAssociated->GetBinContent(effVars));
          
-         // trigger particle
-         if (fCorrectTriggers)
+           useWeight *= fEfficiencyCorrectionAssociated->GetBinContent(effVars);
+         }
+         if (fEfficiencyCorrectionTriggers)
          {
-           effVars[0] = fEfficiencyCorrection->GetAxis(0)->FindBin(triggerEta);
-           effVars[1] = fEfficiencyCorrection->GetAxis(1)->FindBin(vars[2]); //pt
-           useWeight *= fEfficiencyCorrection->GetBinContent(effVars);
+           Int_t effVars[4];
+
+           effVars[0] = fEfficiencyCorrectionTriggers->GetAxis(0)->FindBin(triggerEta);
+           effVars[1] = fEfficiencyCorrectionTriggers->GetAxis(1)->FindBin(vars[2]); //pt
+           effVars[2] = fEfficiencyCorrectionTriggers->GetAxis(2)->FindBin(vars[3]); //centrality
+           effVars[3] = fEfficiencyCorrectionTriggers->GetAxis(3)->FindBin(vars[5]); //zVtx
+           useWeight *= fEfficiencyCorrectionTriggers->GetBinContent(effVars);
          }
        }
-       
+
        if (fWeightPerEvent)
        {
          Int_t weightBin = triggerWeighting->GetXaxis()->FindBin(vars[2]);
@@ -790,8 +800,8 @@ void AliUEHistograms::FillCorrelations(Double_t centrality, Float_t zVtx, AliUEH
        }
     
         // fill all in toward region and do not use the other regions
-        fNumberDensityPhi->GetTrackHist(AliUEHist::kToward)->Fill(vars, step, useWeight);
-       
+       fNumberDensityPhi->GetTrackHist(AliUEHist::kToward)->Fill(vars, step, useWeight);
+
 //     Printf("%.2f %.2f --> %.2f", triggerEta, eta[j], vars[0]);
       }
  
@@ -804,16 +814,16 @@ void AliUEHistograms::FillCorrelations(Double_t centrality, Float_t zVtx, AliUEH
        vars[2] = zVtx;
 
        Double_t useWeight = 1;
-       if (fEfficiencyCorrection && applyEfficiency && fCorrectTriggers)
+       if (fEfficiencyCorrectionTriggers && applyEfficiency)
        {
          Int_t effVars[4];
          
          // trigger particle
-         effVars[0] = fEfficiencyCorrection->GetAxis(0)->FindBin(triggerEta);
-         effVars[1] = fEfficiencyCorrection->GetAxis(1)->FindBin(vars[0]); //pt
-         effVars[2] = fEfficiencyCorrection->GetAxis(2)->FindBin(vars[1]); //centrality
-         effVars[3] = fEfficiencyCorrection->GetAxis(3)->FindBin(vars[2]); //zVtx
-         useWeight *= fEfficiencyCorrection->GetBinContent(effVars);
+         effVars[0] = fEfficiencyCorrectionTriggers->GetAxis(0)->FindBin(triggerEta);
+         effVars[1] = fEfficiencyCorrectionTriggers->GetAxis(1)->FindBin(vars[0]); //pt
+         effVars[2] = fEfficiencyCorrectionTriggers->GetAxis(2)->FindBin(vars[1]); //centrality
+         effVars[3] = fEfficiencyCorrectionTriggers->GetAxis(3)->FindBin(vars[2]); //zVtx
+         useWeight *= fEfficiencyCorrectionTriggers->GetBinContent(effVars);
        }
        if (fWeightPerEvent)
        {
@@ -1088,8 +1098,11 @@ void AliUEHistograms::Copy(TObject& c) const
     if (fTwoTrackDistancePt[i])
       target.fTwoTrackDistancePt[i] = dynamic_cast<TH3F*> (fTwoTrackDistancePt[i]->Clone());
 
-  if (fEfficiencyCorrection)
-    target.fEfficiencyCorrection = dynamic_cast<THnF*> (fEfficiencyCorrection->Clone());
+  if (fEfficiencyCorrectionTriggers)
+    target.fEfficiencyCorrectionTriggers = dynamic_cast<THnF*> (fEfficiencyCorrectionTriggers->Clone());
+ if (fEfficiencyCorrectionAssociated)
+    target.fEfficiencyCorrectionAssociated = dynamic_cast<THnF*> (fEfficiencyCorrectionAssociated->Clone());
     
   target.fSelectCharge = fSelectCharge;
   target.fTriggerSelectCharge = fTriggerSelectCharge;
@@ -1102,7 +1115,6 @@ void AliUEHistograms::Copy(TObject& c) const
   target.fWeightPerEvent = fWeightPerEvent;
   target.fRunNumber = fRunNumber;
   target.fMergeCount = fMergeCount;
-  target.fCorrectTriggers = fCorrectTriggers;
 }
 
 //____________________________________________________________________
index fe2b094..4552be0 100644 (file)
@@ -52,7 +52,8 @@ class AliUEHistograms : public TNamed
   
   void SetRunNumber(Long64_t runNumber) { fRunNumber = runNumber; }
   
-  void SetEfficiencyCorrection(THnF* hist, Bool_t correctTriggers) { fEfficiencyCorrection = hist; fCorrectTriggers = correctTriggers; }
+  void SetEfficiencyCorrectionTriggers(THnF* hist)   { fEfficiencyCorrectionTriggers = hist;   }
+  void SetEfficiencyCorrectionAssociated(THnF* hist) { fEfficiencyCorrectionAssociated = hist; }
   
   TH2F* GetCorrelationpT()  { return fCorrelationpT; }
   TH2F* GetCorrelationEta() { return fCorrelationEta; }
@@ -132,8 +133,8 @@ protected:
   TH3F* fTwoTrackDistancePt[2];    // control histograms for two-track efficiency study: dphi*_min vs deta (0 = before cut, 1 = after cut)
   TH2F* fControlConvResoncances; // control histograms for cuts on conversions and resonances
   
-  THnF* fEfficiencyCorrection;   // if non-0 this efficiency correction is applied on the fly to the filling for associated particles. The factor is multiplicative, i.e. should contain 1/efficiency
-  Bool_t fCorrectTriggers;     // if true correct also trigger particles
+  THnF* fEfficiencyCorrectionTriggers;   // if non-0 this efficiency correction is applied on the fly to the filling for trigger particles. The factor is multiplicative, i.e. should contain 1/efficiency
+  THnF* fEfficiencyCorrectionAssociated;   // if non-0 this efficiency correction is applied on the fly to the filling for associated particles. The factor is multiplicative, i.e. should contain 1/efficiency
   
   Int_t fSelectCharge;           // (un)like sign selection when building correlations: 0: no selection; 1: unlike sign; 2: like sign
   Int_t fTriggerSelectCharge;    // select charge of trigger particle
@@ -149,7 +150,7 @@ protected:
   
   Int_t fMergeCount;           // counts how many objects have been merged together
   
-  ClassDef(AliUEHistograms, 23)  // underlying event histogram container
+  ClassDef(AliUEHistograms, 24)  // underlying event histogram container
 };
 
 Float_t AliUEHistograms::GetDPhiStar(Float_t phi1, Float_t pt1, Float_t charge1, Float_t phi2, Float_t pt2, Float_t charge2, Float_t radius, Float_t bSign)
index 8fbac90..92fe428 100644 (file)
@@ -101,8 +101,8 @@ fHelperPID(0x0),
 fAnalyseUE(0x0),
 fHistos(0x0),
 fHistosMixed(0),
-fEfficiencyCorrection(0),
-fCorrectTriggers(kFALSE),
+fEfficiencyCorrectionTriggers(0),
+fEfficiencyCorrectionAssociated(0),
 // handlers and events
 fAOD(0x0),
 fESD(0x0),
@@ -122,6 +122,7 @@ fTrackEtaCut(0.8),
 fOnlyOneEtaSide(0),
 fPtMin(0.5),
 fFilterBit(0xFF),
+fTrackStatus(0),
 fSelectBit(AliVEvent::kMB|AliVEvent::kUserDefined),
 fUseChargeHadrons(kFALSE),
 fParticleSpeciesTrigger(-1),
@@ -213,6 +214,7 @@ void  AliAnalysisTaskPhiCorrelations::CreateOutputObjects()
   // Initialize class with main algorithms, event and track selection. 
   fAnalyseUE = new AliAnalyseLeadingTrackUE();
   fAnalyseUE->SetParticleSelectionCriteria(fFilterBit, fUseChargeHadrons, fTrackEtaCut, fPtMin);
+  fAnalyseUE->SetTrackStatus(fTrackStatus);
   fAnalyseUE->SetDebug(fDebug); 
   fAnalyseUE->DefineESDCuts(fFilterBit);
   fAnalyseUE->SetEventSelection(fSelectBit);
@@ -267,11 +269,16 @@ void  AliAnalysisTaskPhiCorrelations::CreateOutputObjects()
   
   fHistos->SetWeightPerEvent(fWeightPerEvent);
   fHistosMixed->SetWeightPerEvent(fWeightPerEvent);
-
-  if (fEfficiencyCorrection)
+  
+  if (fEfficiencyCorrectionTriggers)
+   {
+    fHistos->SetEfficiencyCorrectionTriggers(fEfficiencyCorrectionTriggers);
+    fHistosMixed->SetEfficiencyCorrectionTriggers((THnF*) fEfficiencyCorrectionTriggers->Clone());
+   }
+  if (fEfficiencyCorrectionAssociated)
   {
-    fHistos->SetEfficiencyCorrection(fEfficiencyCorrection, fCorrectTriggers);
-    fHistosMixed->SetEfficiencyCorrection((THnF*) fEfficiencyCorrection->Clone(), fCorrectTriggers);
+    fHistos->SetEfficiencyCorrectionAssociated(fEfficiencyCorrectionAssociated);
+    fHistosMixed->SetEfficiencyCorrectionAssociated((THnF*) fEfficiencyCorrectionAssociated->Clone());
   }
   
   // add histograms to list
@@ -365,6 +372,7 @@ void  AliAnalysisTaskPhiCorrelations::AddSettingsTree()
   settingsTree->Branch("fOnlyOneEtaSide", &fOnlyOneEtaSide,"OnlyOneEtaSide/I");
   settingsTree->Branch("fPtMin", &fPtMin, "PtMin/D");
   settingsTree->Branch("fFilterBit", &fFilterBit,"FilterBit/I");
+  settingsTree->Branch("fTrackStatus", &fTrackStatus,"TrackStatus/I");
   settingsTree->Branch("fSelectBit", &fSelectBit,"EventSelectionBit/I");
   settingsTree->Branch("fUseChargeHadrons", &fUseChargeHadrons,"UseChHadrons/O");
   settingsTree->Branch("fParticleSpeciesTrigger", &fParticleSpeciesTrigger,"ParticleSpeciesTrigger/I");
@@ -386,7 +394,6 @@ void  AliAnalysisTaskPhiCorrelations::AddSettingsTree()
   settingsTree->Branch("fSkipFastCluster", &fSkipFastCluster,"SkipFastCluster/O");
   settingsTree->Branch("fWeightPerEvent", &fWeightPerEvent,"WeightPerEvent/O");
   //fCustomBinning
-  settingsTree->Branch("fCorrectTriggers", &fCorrectTriggers,"CorrectTriggers/O");
   
   settingsTree->Fill();
   fListOfHistos->Add(settingsTree);
@@ -688,14 +695,14 @@ void  AliAnalysisTaskPhiCorrelations::AnalyseCorrectionMode()
        fHistos->FillCorrelations(centrality, zVtx, AliUEHist::kCFStepBiasStudy, tracks, tracksCorrelate, weight, kTRUE, kTRUE, bSign, fTwoTrackEfficiencyCut);
 
       // apply correction efficiency, STEP 10
-      if (fEfficiencyCorrection)
+      if (fEfficiencyCorrectionTriggers || fEfficiencyCorrectionAssociated)
       {
-       // with or without two track efficiency depending on if fTwoTrackEfficiencyCut is set
+         // with or without two track efficiency depending on if fTwoTrackEfficiencyCut is set
        Bool_t twoTrackCut = (fTwoTrackEfficiencyCut > 0);
        
        fHistos->FillCorrelations(centrality, zVtx, AliUEHist::kCFStepCorrected, tracks, tracksCorrelate, weight, kTRUE, twoTrackCut, bSign, fTwoTrackEfficiencyCut, kTRUE);
       }
-
+      
       // mixed event
       if (fFillMixed)
       {
@@ -713,7 +720,7 @@ void  AliAnalysisTaskPhiCorrelations::AnalyseCorrectionMode()
              fHistosMixed->FillCorrelations(centrality, zVtx, AliUEHist::kCFStepBiasStudy, tracks, pool2->GetEvent(jMix), 1.0 / pool2->GetCurrentNEvents(), (jMix == 0), kTRUE, bSign, fTwoTrackEfficiencyCut);
            
            // apply correction efficiency, STEP 10
-           if (fEfficiencyCorrection)
+           if (fEfficiencyCorrectionTriggers || fEfficiencyCorrectionAssociated)
            {
              // with or without two track efficiency depending on if fTwoTrackEfficiencyCut is set
              Bool_t twoTrackCut = (fTwoTrackEfficiencyCut > 0);
@@ -959,6 +966,7 @@ void  AliAnalysisTaskPhiCorrelations::AnalyseDataMode()
     referenceMultiplicity = AliESDtrackCuts::GetReferenceMultiplicity(fESD);
   else if (fAOD)
     referenceMultiplicity = tracks->GetEntriesFast(); // TODO to be replaced by the estimator once available in the AOD
+//    referenceMultiplicity = fAOD->GetHeader()->GetRefMultiplicityComb05();
 
   ((TH2F*) fListOfHistos->FindObject("referenceMultiplicity"))->Fill(centrality, referenceMultiplicity);
   
index e5db248..0bf7309 100644 (file)
@@ -75,7 +75,8 @@ class  AliAnalysisTaskPhiCorrelations : public AliAnalysisTask
     virtual     void    SetInjectedSignals(Bool_t flag) { fInjectedSignals = flag; }
     
     // histogram settings
-    void SetEfficiencyCorrection(THnF* hist, Bool_t correctTriggers) { fEfficiencyCorrection = hist; fCorrectTriggers = correctTriggers; }
+    void SetEfficiencyCorrectionTriggers(THnF* hist) { fEfficiencyCorrectionTriggers = hist; }
+    void SetEfficiencyCorrectionAssociated(THnF* hist) { fEfficiencyCorrectionAssociated = hist; }
 
     // for event QA
     void   SetTracksInVertex( Int_t val ){ fnTracksVertex = val; }
@@ -83,9 +84,10 @@ class  AliAnalysisTaskPhiCorrelations : public AliAnalysisTask
     
     // track cuts
     void   SetTrackEtaCut( Double_t val )    { fTrackEtaCut = val; }
-    void   SetOnlyOneEtaSide(Int_t flag)    { fOnlyOneEtaSide = flag; }
+    void   SetOnlyOneEtaSide(Int_t flag)     { fOnlyOneEtaSide = flag; }
     void   SetPtMin(Double_t val)            { fPtMin = val; }
     void   SetFilterBit( UInt_t val )        { fFilterBit = val;  }
+    void   SetTrackStatus(UInt_t status)     { fTrackStatus = status; }
     
     void   SetEventSelectionBit( UInt_t val )        { fSelectBit = val;  }
     void   SetUseChargeHadrons( Bool_t val ) { fUseChargeHadrons = val; }
@@ -125,7 +127,7 @@ class  AliAnalysisTaskPhiCorrelations : public AliAnalysisTask
     Int_t               fDebug;           //  Debug flag
     Int_t              fMode;            //  fMode = 0: data-like analysis 
                                          //  fMode = 1: corrections analysis   
-    Bool_t              fReduceMemoryFootprint; // reduce memory consumption by writing less debug histograms
+    Bool_t             fReduceMemoryFootprint; // reduce memory consumption by writing less debug histograms
     Bool_t             fFillMixed;             // enable event mixing (default: ON)
     Int_t              fMixingTracks;          // size of track buffer for event mixing
     Bool_t             fCompareCentralities;   // use the z vtx axis for a centrality comparison
@@ -142,9 +144,9 @@ class  AliAnalysisTaskPhiCorrelations : public AliAnalysisTask
     AliUEHistograms*  fHistos;       //! points to class to handle histograms/containers  
     AliUEHistograms*  fHistosMixed;       //! points to class to handle mixed histograms/containers  
     
-    THnF* fEfficiencyCorrection;   // if non-0 this efficiency correction is applied on the fly to the filling for associated particles. The factor is multiplicative, i.e. should contain 1/efficiency. Axes: eta, pT, centrality, z-vtx
-    Bool_t fCorrectTriggers;   // if true correct also trigger particles
-
+    THnF* fEfficiencyCorrectionTriggers;   // if non-0 this efficiency correction is applied on the fly to the filling for trigger particles. The factor is multiplicative, i.e. should contain 1/efficiency. Axes: eta, pT, centrality, z-vtx
+    THnF* fEfficiencyCorrectionAssociated;   // if non-0 this efficiency correction is applied on the fly to the filling for associated particles. The factor is multiplicative, i.e. should contain 1/efficiency. Axes: eta, pT, centrality, z-vtx
+    
     // Handlers and events
     AliAODEvent*             fAOD;             //! AOD Event 
     AliESDEvent*             fESD;             //! ESD Event 
@@ -166,7 +168,8 @@ class  AliAnalysisTaskPhiCorrelations : public AliAnalysisTask
     Double_t           fTrackEtaCut;          // Eta cut on particles
     Int_t              fOnlyOneEtaSide;       // decides that only trigger particle from one eta side are considered (0 = all; -1 = negative, 1 = positive)
     Double_t            fPtMin;                // Min pT to start correlations
-    UInt_t             fFilterBit;            // Select tracks from an specific track cut 
+    UInt_t             fFilterBit;            // Select tracks from an specific track cut 
+    UInt_t             fTrackStatus;          // if non-0, the bits set in this variable are required for each track
     UInt_t             fSelectBit;            // Select events according to AliAnalysisTaskJetServices bit maps 
     Bool_t             fUseChargeHadrons;     // Only use charge hadrons
     Int_t               fParticleSpeciesTrigger; // Select which particle to use for the trigger [ -1 (all, default) 0 (pions) 1 (kaons) 2 (protons) 3 (others) particles ]
@@ -190,7 +193,7 @@ class  AliAnalysisTaskPhiCorrelations : public AliAnalysisTask
     
     Bool_t fFillpT;                // fill sum pT instead of number density
     
-    ClassDef( AliAnalysisTaskPhiCorrelations, 27); // Analysis task for delta phi correlations
+    ClassDef( AliAnalysisTaskPhiCorrelations, 28); // Analysis task for delta phi correlations
   };
 
 class AliDPhiBasicParticle : public AliVParticle