ROOT logo
#include "TChain.h"
#include "TH2D.h"
#include "TH3D.h"


#include "AliAODEvent.h"
#include "AliAODRecoDecay.h"
#include "AliAODTrack.h"
#include "AliLog.h"

#include "AliAnalysisTaskSE.h"
#include "AliMCEvent.h"
#include "AliAODMCParticle.h"



#include "AliAnalysisTaskAODFilterBitQA.h"

// Analysis task for the QA of AOD track filter bits
// Authors: m.weber@cern.ch

ClassImp(AliAnalysisTaskAODFilterBitQA)

//________________________________________________________________________
AliAnalysisTaskAODFilterBitQA::AliAnalysisTaskAODFilterBitQA(const char *name) 
  : AliAnalysisTaskSE(name),
  fArrayMC(0x0),
  fListQA(0x0),
  useCentrality(kFALSE),
  fillOnlySecondaries(kFALSE),
  fillHFVertexingTracks(kFALSE),
  fHFBranchName("D0toKpi"),
  fBitIgnore1(-1),
  fBitIgnore2(-1),
  fCentralityPercentileMin(0.),
  fCentralityPercentileMax(80.), 
  fPtMin(0),
  fPtMax(1000),
  fEtaMin(-10),
  fEtaMax(10),
  fHistTrackStats(0)
{

  for(Int_t iCharge = 0; iCharge < gNCharge; iCharge++){
    for(Int_t iTrackBit = 0; iTrackBit < gBitMax; iTrackBit++){
      fHistKinematics[iCharge][iTrackBit] = NULL;
      fHistDCAconstrained[iCharge][iTrackBit] = NULL;
      fHistDCAglobal[iCharge][iTrackBit]  = NULL;
      fHistChiClus[iCharge][iTrackBit]    = NULL;
    }
  }
  
  DefineInput(0, TChain::Class());
  // Output slot #0 writes into a TH1 container
  DefineOutput(1, TList::Class());

}

//________________________________________________________________________
AliAnalysisTaskAODFilterBitQA::~AliAnalysisTaskAODFilterBitQA() {
  // Destructor
  // ... not implemented
}

//________________________________________________________________________
void AliAnalysisTaskAODFilterBitQA::UserCreateOutputObjects() {
  // Create histograms
  // Called once

   // global switch disabling the reference 
  // (to avoid "Replacing existing TH1" if several wagons are created in train)
  Bool_t oldStatus = TH1::AddDirectoryStatus();
  TH1::AddDirectory(kFALSE);

  // QA list
  fListQA = new TList();
  fListQA->SetName("listQA");
  fListQA->SetOwner();

  // QA histograms
  fHistTrackStats = new TH2D("fHistTrackStats","Track statistics;Centrality;TrackFilterBit;N_{events}",100,0,100,gBitMax,0,gBitMax);
  fListQA->Add(fHistTrackStats);

  TString sCharge[gNCharge] = {"Plus","Minus"};
  
  for(Int_t iCharge = 0; iCharge < gNCharge; iCharge++){
    for(Int_t iTrackBit = 0; iTrackBit < gBitMax; iTrackBit++){
      fHistKinematics[iCharge][iTrackBit] = new TH3D(Form("Bit%d_%s_Kinematics",iTrackBit,sCharge[iCharge].Data()),Form("Bit%d_%s_Kinematics;#eta;#varphi (rad);p_{T} (GeV/c)",iTrackBit,sCharge[iCharge].Data()),100,-1.0,1.0,100,0,TMath::Pi()*2,100,0,10);
      fHistDCAconstrained[iCharge][iTrackBit] = new TH2D(Form("Bit%d_%s_DCAconstrained",iTrackBit,sCharge[iCharge].Data()),Form("Bit%d_%s_DCAconstrained;DCA XY [Constrained] (cm);DCA Z [Constrained] (cm)",iTrackBit,sCharge[iCharge].Data()),100,-5.0,5.0,100,-5.0,5.0);
      fHistDCAglobal[iCharge][iTrackBit]  = new TH3D(Form("Bit%d_%s_DCAglobal",iTrackBit,sCharge[iCharge].Data()),Form("Bit%d_%s_DCAglobal;DCA X [Global] (cm);DCA Y [Global] (cm);DCA Z [Global] (cm)",iTrackBit,sCharge[iCharge].Data()),100,-5.0,5.0,100,-5.0,5.0,100,-5.0,5.0);
fHistChiClus[iCharge][iTrackBit]    = new TH2D(Form("Bit%d_%s_ChiClus",iTrackBit,sCharge[iCharge].Data()),Form("Bit%d_%s_ChiClus;#chi^{2} [Fit];N_{clus} [TPC]",iTrackBit,sCharge[iCharge].Data()),100,-1.0,5.0,160,0,160.0);
      fListQA->Add(fHistKinematics[iCharge][iTrackBit]);
      fListQA->Add(fHistDCAconstrained[iCharge][iTrackBit]);
      fListQA->Add(fHistDCAglobal[iCharge][iTrackBit]);
      fListQA->Add(fHistChiClus[iCharge][iTrackBit]);
    }
  }

  // Post output data.
  PostData(1, fListQA);

  AliInfo("Finished setting up the Output");
  TH1::AddDirectory(oldStatus);
}

//________________________________________________________________________
void AliAnalysisTaskAODFilterBitQA::UserExec(Option_t *) {
  // Main loop
  // Called for each event

  AliVEvent* event = dynamic_cast<AliVEvent*>(InputEvent());     
  if(!event) {
    AliError("event not available");
    return;
  }

  // MC information (set if available)
  fArrayMC = dynamic_cast<TClonesArray*>(event->FindListObject(AliAODMCParticle::StdBranchName()));   
    
  // check event cuts
  Double_t lMultiplicityVar = -1;
  if((lMultiplicityVar = IsEventAccepted(event)) < 0){ 
    return;
  }

  // fill HF vertexing tracks
  if(fillHFVertexingTracks){
    GetAcceptedHFVertexingTracks(event,lMultiplicityVar);
  }
  else{
    // get the accepted tracks in main event
    GetAcceptedTracks(event,lMultiplicityVar);
  }
}

//________________________________________________________________________
void  AliAnalysisTaskAODFilterBitQA::FinishTaskOutput(){
  // Finish task output
  // not implemented ...

}

//________________________________________________________________________
void AliAnalysisTaskAODFilterBitQA::Terminate(Option_t *) {
  // Draw result to the screen
  // Called once at the end of the query
  // not implemented ...

}


//________________________________________________________________________
Double_t AliAnalysisTaskAODFilterBitQA::IsEventAccepted(AliVEvent *event){
  // Checks the Event cuts

  // still hard coded
  Double_t fVxMax = 0.5;
  Double_t fVyMax = 0.5;
  Double_t fVzMax = 10.0;
  TString fCentralityEstimator = "V0M";

  Float_t gCentrality      = -1.;
  const AliVVertex *vertex = event->GetPrimaryVertex();
  
  if(vertex) {
    Double32_t fCov[6];
    vertex->GetCovarianceMatrix(fCov);
    if(vertex->GetNContributors() > 0) {
      if(fCov[5] != 0) {
	if(TMath::Abs(vertex->GetX()) < fVxMax) {
	  if(TMath::Abs(vertex->GetY()) < fVyMax) {
	    if(TMath::Abs(vertex->GetZ()) < fVzMax) {

	      // get the reference multiplicty or centrality (if required)
	      if(useCentrality){
	      
		AliAODHeader *header = (AliAODHeader*) event->GetHeader();
		gCentrality = header->GetCentralityP()->GetCentralityPercentile(fCentralityEstimator.Data());
		
		if((gCentrality > fCentralityPercentileMin) && (gCentrality < fCentralityPercentileMax)){		  
		  return gCentrality;
		}
		else{
		  return -1;
		}//centrality range
	      }//use centrality

	      // if not using centrality/multiplicty, return 1
	      return 1;

	    }//Vz cut
	  }//Vy cut
	}//Vx cut
      }//proper vertex resolution
    }//proper number of contributors
  }//vertex object valid
  
  // in all other cases return -1 (event not accepted)
  return -1;
}

//________________________________________________________________________
void AliAnalysisTaskAODFilterBitQA::GetAcceptedTracks(AliVEvent *event, Double_t gCentrality){
  // Checks track cuts (filter bits)
  // Fills QA histograms


  Double_t vEta;
  Double_t vPhi;
  Double_t vPt;
  Double_t vDCAconstrainedxy;
  Double_t vDCAconstrainedz; 
  Double_t vDCAglobalx;
  Double_t vDCAglobaly;
  Double_t vDCAglobalz;
  Double_t vChi2;
  Double_t vClus;

  Double_t pos[3];
  Double_t v[3];

  const AliVVertex *vertex = event->GetPrimaryVertex();
  vertex->GetXYZ(v);

  // Loop over tracks in event
  for (Int_t iTracks = 0; iTracks < event->GetNumberOfTracks(); iTracks++) {
    AliAODTrack* aodTrack = dynamic_cast<AliAODTrack *>(event->GetTrack(iTracks));
    if (!aodTrack) {
      AliError(Form("Could not receive track %d", iTracks));
      continue;
    }

    // get MC information (if available)
    if(fArrayMC && fillOnlySecondaries){
      
      Int_t label = aodTrack->GetLabel();
      AliAODMCParticle *mcTrack = (AliAODMCParticle *)fArrayMC->At(TMath::Abs(label));

      if(mcTrack->IsPhysicalPrimary())
	continue;      
    }

    // track parameters
    vEta    = aodTrack->Eta();
    vPhi    = aodTrack->Phi();// * TMath::RadToDeg();
    vPt     = aodTrack->Pt();
    vDCAconstrainedxy  = aodTrack->DCA();     
    vDCAconstrainedz   = aodTrack->ZAtDCA();   
    vChi2   = aodTrack->Chi2perNDF(); 
    vClus   = aodTrack->GetTPCNcls(); 

    // kinematic cuts
    if( vPt > fPtMax || vPt < fPtMin )
      continue;
    if( vEta > fEtaMax || vEta < fEtaMin )
      continue;

    // if not constrained track the position is stored (primary vertex to be subtracted)
    aodTrack->GetXYZ(pos);
    vDCAglobalx  = pos[0] - v[0];
    vDCAglobaly  = pos[1] - v[1];
    vDCAglobalz  = pos[2] - v[2];
    
    // fill for separately for positive and negative charges
    Int_t iCharge = -1;
    // positive 
    if(aodTrack->Charge() > 0)
      iCharge = 0;
    else if(aodTrack->Charge() < 0)
      iCharge = 1;
    else{
      AliError("Charge==0?");
      iCharge = -1;
    }


    // AOD track cuts
    if(iCharge > -1){
      for(Int_t iTrackBit = 0; iTrackBit < gBitMax-1; iTrackBit++){
	fHistTrackStats->Fill(gCentrality,iTrackBit,aodTrack->TestFilterBit(1<<iTrackBit));
	
	if(aodTrack->TestFilterBit(1<<iTrackBit)){
	  fHistKinematics[iCharge][iTrackBit]->Fill(vEta,vPhi,vPt);
	  fHistDCAconstrained[iCharge][iTrackBit]->Fill(vDCAconstrainedxy,vDCAconstrainedz);
	  fHistDCAglobal[iCharge][iTrackBit]->Fill(vDCAglobalx,vDCAglobaly,vDCAglobalz);
	  fHistChiClus[iCharge][iTrackBit]->Fill(vChi2,vClus);
	} 
      }//bit loop
      
      // fill all tracks in last bit
      fHistTrackStats->Fill(gCentrality,gBitMax-1,1);
      fHistKinematics[iCharge][gBitMax-1]->Fill(vEta,vPhi,vPt);
      fHistDCAconstrained[iCharge][gBitMax-1]->Fill(vDCAconstrainedxy,vDCAconstrainedz);
      fHistDCAglobal[iCharge][gBitMax-1]->Fill(vDCAglobalx,vDCAglobaly,vDCAglobalz);
      fHistChiClus[iCharge][gBitMax-1]->Fill(vChi2,vClus);
      
    }//charge positive or negative
  }//track loop
  
  return;  
}


//________________________________________________________________________
void AliAnalysisTaskAODFilterBitQA::GetAcceptedHFVertexingTracks(AliVEvent *event, Double_t gCentrality){
  // Checks track cuts (filter bits)
  // from daughters of HF candidates
  // Fills QA histograms

  Double_t vEta;
  Double_t vPhi;
  Double_t vPt;
  Double_t vDCAconstrainedxy;
  Double_t vDCAconstrainedz; 
  Double_t vDCAglobalx;
  Double_t vDCAglobaly;
  Double_t vDCAglobalz;
  Double_t vChi2;
  Double_t vClus;

  Double_t pos[3];
  Double_t v[3];

  Int_t IDList[1000];
  Int_t IDListLength = 0;
  for(Int_t i = 0; i < 1000; i++){
    IDList[i] = -5;
  }

  const AliVVertex *vertex = event->GetPrimaryVertex();
  vertex->GetXYZ(v);

  // =================================================================================
  // HF part (taken from AliAnalysisTaskSEDmesonsFilterCJ)

  TClonesArray *arrayDStartoD0pi = (TClonesArray*)event->GetList()->FindObject(fHFBranchName.Data());
   
  if (!arrayDStartoD0pi) {
    AliInfo(Form("Could not find array %s, skipping the event",fHFBranchName.Data()));
    return;
  } else {
    AliDebug(2, Form("Found %d vertices",arrayDStartoD0pi->GetEntriesFast()));   
  }

  // loop over tracks
   const Int_t NVertices = arrayDStartoD0pi->GetEntriesFast();

   for (Int_t iVertex = 0; iVertex < NVertices; ++iVertex) {
     
     AliAODRecoDecay *HFvertex = static_cast<AliAODRecoDecay*>(arrayDStartoD0pi->At(iVertex));
   
     // Loop over tracks (daughters of D candidates)
     for (Int_t iProng = 0; iProng<HFvertex->GetNProngs(); iProng++) { 
       
       AliAODTrack *daughter = (AliAODTrack*)HFvertex->GetDaughter(iProng);
       if (!daughter){
	 AliError(Form("Could not receive track %d %d", iVertex, iProng));
	 continue;
       }


       // get MC information (if available)
       if(fArrayMC && fillOnlySecondaries){
	 
	 Int_t label = daughter->GetLabel();
	 AliAODMCParticle *mcTrack = (AliAODMCParticle *)fArrayMC->At(TMath::Abs(label));
	 
	 if(mcTrack->IsPhysicalPrimary())
	   continue;      
       }

       // track parameters
       vEta    = daughter->Eta();
       vPhi    = daughter->Phi();// * TMath::RadToDeg();
       vPt     = daughter->Pt();
       vDCAconstrainedxy  = daughter->DCA();     
       vDCAconstrainedz   = daughter->ZAtDCA();   
       vChi2   = daughter->Chi2perNDF(); 
       vClus   = daughter->GetTPCNcls(); 
       
       // kinematic cuts
       if( vPt > fPtMax || vPt < fPtMin )
	 continue;
       if( vEta > fEtaMax || vEta < fEtaMin )
	 continue;

       // avoid double counting (can be optimized)
       Bool_t doubleCount = kFALSE;
       Int_t  daughterID  = daughter->GetID();
       for(Int_t idx = 0; idx < IDListLength; idx++){
	 if(IDList[idx]==daughterID){
	   doubleCount = kTRUE;
	   break;
	 }
       }
       if(!doubleCount){
	 IDList[IDListLength] = daughterID;
	 IDListLength++;
       }
       else{
	 continue;
       }

       
       // if not constrained track the position is stored (primary vertex to be subtracted)
       daughter->GetXYZ(pos);
       vDCAglobalx  = pos[0] - v[0];
       vDCAglobaly  = pos[1] - v[1];
       vDCAglobalz  = pos[2] - v[2];
       
       // fill for separately for positive and negative charges
       Int_t iCharge = -1;
       // positive 
       if(daughter->Charge() > 0)
	 iCharge = 0;
       else if(daughter->Charge() < 0)
	 iCharge = 1;
       else{
	 AliError("Charge==0?");
	 iCharge = -1;
       }
       
       
       // AOD track cuts
       if(iCharge > -1){

	 // if some filter bits should be ignored, skip them here
	 if(fBitIgnore1 > -1 && daughter->TestFilterBit(1<<fBitIgnore1))
	   continue;
	 if(fBitIgnore2 > -1 && daughter->TestFilterBit(1<<fBitIgnore2))
	   continue;

	 for(Int_t iTrackBit = 0; iTrackBit < gBitMax; iTrackBit++){
	   fHistTrackStats->Fill(gCentrality,iTrackBit,daughter->TestFilterBit(1<<iTrackBit));
	   
	   if(daughter->TestFilterBit(1<<iTrackBit)){
	     fHistKinematics[iCharge][iTrackBit]->Fill(vEta,vPhi,vPt);
	     fHistDCAconstrained[iCharge][iTrackBit]->Fill(vDCAconstrainedxy,vDCAconstrainedz);
	     fHistDCAglobal[iCharge][iTrackBit]->Fill(vDCAglobalx,vDCAglobaly,vDCAglobalz);
	     fHistChiClus[iCharge][iTrackBit]->Fill(vChi2,vClus);
	   } 
	 }//bit loop

	 // fill all tracks in last bit
	 fHistTrackStats->Fill(gCentrality,gBitMax-1,1);
	 fHistKinematics[iCharge][gBitMax-1]->Fill(vEta,vPhi,vPt);
	 fHistDCAconstrained[iCharge][gBitMax-1]->Fill(vDCAconstrainedxy,vDCAconstrainedz);
	 fHistDCAglobal[iCharge][gBitMax-1]->Fill(vDCAglobalx,vDCAglobaly,vDCAglobalz);
	 fHistChiClus[iCharge][gBitMax-1]->Fill(vChi2,vClus);
	 
       }//charge positive or negative
       
     }//prong loop
   }//HF vertex loop
   
  return;  
}
 AliAnalysisTaskAODFilterBitQA.cxx:1
 AliAnalysisTaskAODFilterBitQA.cxx:2
 AliAnalysisTaskAODFilterBitQA.cxx:3
 AliAnalysisTaskAODFilterBitQA.cxx:4
 AliAnalysisTaskAODFilterBitQA.cxx:5
 AliAnalysisTaskAODFilterBitQA.cxx:6
 AliAnalysisTaskAODFilterBitQA.cxx:7
 AliAnalysisTaskAODFilterBitQA.cxx:8
 AliAnalysisTaskAODFilterBitQA.cxx:9
 AliAnalysisTaskAODFilterBitQA.cxx:10
 AliAnalysisTaskAODFilterBitQA.cxx:11
 AliAnalysisTaskAODFilterBitQA.cxx:12
 AliAnalysisTaskAODFilterBitQA.cxx:13
 AliAnalysisTaskAODFilterBitQA.cxx:14
 AliAnalysisTaskAODFilterBitQA.cxx:15
 AliAnalysisTaskAODFilterBitQA.cxx:16
 AliAnalysisTaskAODFilterBitQA.cxx:17
 AliAnalysisTaskAODFilterBitQA.cxx:18
 AliAnalysisTaskAODFilterBitQA.cxx:19
 AliAnalysisTaskAODFilterBitQA.cxx:20
 AliAnalysisTaskAODFilterBitQA.cxx:21
 AliAnalysisTaskAODFilterBitQA.cxx:22
 AliAnalysisTaskAODFilterBitQA.cxx:23
 AliAnalysisTaskAODFilterBitQA.cxx:24
 AliAnalysisTaskAODFilterBitQA.cxx:25
 AliAnalysisTaskAODFilterBitQA.cxx:26
 AliAnalysisTaskAODFilterBitQA.cxx:27
 AliAnalysisTaskAODFilterBitQA.cxx:28
 AliAnalysisTaskAODFilterBitQA.cxx:29
 AliAnalysisTaskAODFilterBitQA.cxx:30
 AliAnalysisTaskAODFilterBitQA.cxx:31
 AliAnalysisTaskAODFilterBitQA.cxx:32
 AliAnalysisTaskAODFilterBitQA.cxx:33
 AliAnalysisTaskAODFilterBitQA.cxx:34
 AliAnalysisTaskAODFilterBitQA.cxx:35
 AliAnalysisTaskAODFilterBitQA.cxx:36
 AliAnalysisTaskAODFilterBitQA.cxx:37
 AliAnalysisTaskAODFilterBitQA.cxx:38
 AliAnalysisTaskAODFilterBitQA.cxx:39
 AliAnalysisTaskAODFilterBitQA.cxx:40
 AliAnalysisTaskAODFilterBitQA.cxx:41
 AliAnalysisTaskAODFilterBitQA.cxx:42
 AliAnalysisTaskAODFilterBitQA.cxx:43
 AliAnalysisTaskAODFilterBitQA.cxx:44
 AliAnalysisTaskAODFilterBitQA.cxx:45
 AliAnalysisTaskAODFilterBitQA.cxx:46
 AliAnalysisTaskAODFilterBitQA.cxx:47
 AliAnalysisTaskAODFilterBitQA.cxx:48
 AliAnalysisTaskAODFilterBitQA.cxx:49
 AliAnalysisTaskAODFilterBitQA.cxx:50
 AliAnalysisTaskAODFilterBitQA.cxx:51
 AliAnalysisTaskAODFilterBitQA.cxx:52
 AliAnalysisTaskAODFilterBitQA.cxx:53
 AliAnalysisTaskAODFilterBitQA.cxx:54
 AliAnalysisTaskAODFilterBitQA.cxx:55
 AliAnalysisTaskAODFilterBitQA.cxx:56
 AliAnalysisTaskAODFilterBitQA.cxx:57
 AliAnalysisTaskAODFilterBitQA.cxx:58
 AliAnalysisTaskAODFilterBitQA.cxx:59
 AliAnalysisTaskAODFilterBitQA.cxx:60
 AliAnalysisTaskAODFilterBitQA.cxx:61
 AliAnalysisTaskAODFilterBitQA.cxx:62
 AliAnalysisTaskAODFilterBitQA.cxx:63
 AliAnalysisTaskAODFilterBitQA.cxx:64
 AliAnalysisTaskAODFilterBitQA.cxx:65
 AliAnalysisTaskAODFilterBitQA.cxx:66
 AliAnalysisTaskAODFilterBitQA.cxx:67
 AliAnalysisTaskAODFilterBitQA.cxx:68
 AliAnalysisTaskAODFilterBitQA.cxx:69
 AliAnalysisTaskAODFilterBitQA.cxx:70
 AliAnalysisTaskAODFilterBitQA.cxx:71
 AliAnalysisTaskAODFilterBitQA.cxx:72
 AliAnalysisTaskAODFilterBitQA.cxx:73
 AliAnalysisTaskAODFilterBitQA.cxx:74
 AliAnalysisTaskAODFilterBitQA.cxx:75
 AliAnalysisTaskAODFilterBitQA.cxx:76
 AliAnalysisTaskAODFilterBitQA.cxx:77
 AliAnalysisTaskAODFilterBitQA.cxx:78
 AliAnalysisTaskAODFilterBitQA.cxx:79
 AliAnalysisTaskAODFilterBitQA.cxx:80
 AliAnalysisTaskAODFilterBitQA.cxx:81
 AliAnalysisTaskAODFilterBitQA.cxx:82
 AliAnalysisTaskAODFilterBitQA.cxx:83
 AliAnalysisTaskAODFilterBitQA.cxx:84
 AliAnalysisTaskAODFilterBitQA.cxx:85
 AliAnalysisTaskAODFilterBitQA.cxx:86
 AliAnalysisTaskAODFilterBitQA.cxx:87
 AliAnalysisTaskAODFilterBitQA.cxx:88
 AliAnalysisTaskAODFilterBitQA.cxx:89
 AliAnalysisTaskAODFilterBitQA.cxx:90
 AliAnalysisTaskAODFilterBitQA.cxx:91
 AliAnalysisTaskAODFilterBitQA.cxx:92
 AliAnalysisTaskAODFilterBitQA.cxx:93
 AliAnalysisTaskAODFilterBitQA.cxx:94
 AliAnalysisTaskAODFilterBitQA.cxx:95
 AliAnalysisTaskAODFilterBitQA.cxx:96
 AliAnalysisTaskAODFilterBitQA.cxx:97
 AliAnalysisTaskAODFilterBitQA.cxx:98
 AliAnalysisTaskAODFilterBitQA.cxx:99
 AliAnalysisTaskAODFilterBitQA.cxx:100
 AliAnalysisTaskAODFilterBitQA.cxx:101
 AliAnalysisTaskAODFilterBitQA.cxx:102
 AliAnalysisTaskAODFilterBitQA.cxx:103
 AliAnalysisTaskAODFilterBitQA.cxx:104
 AliAnalysisTaskAODFilterBitQA.cxx:105
 AliAnalysisTaskAODFilterBitQA.cxx:106
 AliAnalysisTaskAODFilterBitQA.cxx:107
 AliAnalysisTaskAODFilterBitQA.cxx:108
 AliAnalysisTaskAODFilterBitQA.cxx:109
 AliAnalysisTaskAODFilterBitQA.cxx:110
 AliAnalysisTaskAODFilterBitQA.cxx:111
 AliAnalysisTaskAODFilterBitQA.cxx:112
 AliAnalysisTaskAODFilterBitQA.cxx:113
 AliAnalysisTaskAODFilterBitQA.cxx:114
 AliAnalysisTaskAODFilterBitQA.cxx:115
 AliAnalysisTaskAODFilterBitQA.cxx:116
 AliAnalysisTaskAODFilterBitQA.cxx:117
 AliAnalysisTaskAODFilterBitQA.cxx:118
 AliAnalysisTaskAODFilterBitQA.cxx:119
 AliAnalysisTaskAODFilterBitQA.cxx:120
 AliAnalysisTaskAODFilterBitQA.cxx:121
 AliAnalysisTaskAODFilterBitQA.cxx:122
 AliAnalysisTaskAODFilterBitQA.cxx:123
 AliAnalysisTaskAODFilterBitQA.cxx:124
 AliAnalysisTaskAODFilterBitQA.cxx:125
 AliAnalysisTaskAODFilterBitQA.cxx:126
 AliAnalysisTaskAODFilterBitQA.cxx:127
 AliAnalysisTaskAODFilterBitQA.cxx:128
 AliAnalysisTaskAODFilterBitQA.cxx:129
 AliAnalysisTaskAODFilterBitQA.cxx:130
 AliAnalysisTaskAODFilterBitQA.cxx:131
 AliAnalysisTaskAODFilterBitQA.cxx:132
 AliAnalysisTaskAODFilterBitQA.cxx:133
 AliAnalysisTaskAODFilterBitQA.cxx:134
 AliAnalysisTaskAODFilterBitQA.cxx:135
 AliAnalysisTaskAODFilterBitQA.cxx:136
 AliAnalysisTaskAODFilterBitQA.cxx:137
 AliAnalysisTaskAODFilterBitQA.cxx:138
 AliAnalysisTaskAODFilterBitQA.cxx:139
 AliAnalysisTaskAODFilterBitQA.cxx:140
 AliAnalysisTaskAODFilterBitQA.cxx:141
 AliAnalysisTaskAODFilterBitQA.cxx:142
 AliAnalysisTaskAODFilterBitQA.cxx:143
 AliAnalysisTaskAODFilterBitQA.cxx:144
 AliAnalysisTaskAODFilterBitQA.cxx:145
 AliAnalysisTaskAODFilterBitQA.cxx:146
 AliAnalysisTaskAODFilterBitQA.cxx:147
 AliAnalysisTaskAODFilterBitQA.cxx:148
 AliAnalysisTaskAODFilterBitQA.cxx:149
 AliAnalysisTaskAODFilterBitQA.cxx:150
 AliAnalysisTaskAODFilterBitQA.cxx:151
 AliAnalysisTaskAODFilterBitQA.cxx:152
 AliAnalysisTaskAODFilterBitQA.cxx:153
 AliAnalysisTaskAODFilterBitQA.cxx:154
 AliAnalysisTaskAODFilterBitQA.cxx:155
 AliAnalysisTaskAODFilterBitQA.cxx:156
 AliAnalysisTaskAODFilterBitQA.cxx:157
 AliAnalysisTaskAODFilterBitQA.cxx:158
 AliAnalysisTaskAODFilterBitQA.cxx:159
 AliAnalysisTaskAODFilterBitQA.cxx:160
 AliAnalysisTaskAODFilterBitQA.cxx:161
 AliAnalysisTaskAODFilterBitQA.cxx:162
 AliAnalysisTaskAODFilterBitQA.cxx:163
 AliAnalysisTaskAODFilterBitQA.cxx:164
 AliAnalysisTaskAODFilterBitQA.cxx:165
 AliAnalysisTaskAODFilterBitQA.cxx:166
 AliAnalysisTaskAODFilterBitQA.cxx:167
 AliAnalysisTaskAODFilterBitQA.cxx:168
 AliAnalysisTaskAODFilterBitQA.cxx:169
 AliAnalysisTaskAODFilterBitQA.cxx:170
 AliAnalysisTaskAODFilterBitQA.cxx:171
 AliAnalysisTaskAODFilterBitQA.cxx:172
 AliAnalysisTaskAODFilterBitQA.cxx:173
 AliAnalysisTaskAODFilterBitQA.cxx:174
 AliAnalysisTaskAODFilterBitQA.cxx:175
 AliAnalysisTaskAODFilterBitQA.cxx:176
 AliAnalysisTaskAODFilterBitQA.cxx:177
 AliAnalysisTaskAODFilterBitQA.cxx:178
 AliAnalysisTaskAODFilterBitQA.cxx:179
 AliAnalysisTaskAODFilterBitQA.cxx:180
 AliAnalysisTaskAODFilterBitQA.cxx:181
 AliAnalysisTaskAODFilterBitQA.cxx:182
 AliAnalysisTaskAODFilterBitQA.cxx:183
 AliAnalysisTaskAODFilterBitQA.cxx:184
 AliAnalysisTaskAODFilterBitQA.cxx:185
 AliAnalysisTaskAODFilterBitQA.cxx:186
 AliAnalysisTaskAODFilterBitQA.cxx:187
 AliAnalysisTaskAODFilterBitQA.cxx:188
 AliAnalysisTaskAODFilterBitQA.cxx:189
 AliAnalysisTaskAODFilterBitQA.cxx:190
 AliAnalysisTaskAODFilterBitQA.cxx:191
 AliAnalysisTaskAODFilterBitQA.cxx:192
 AliAnalysisTaskAODFilterBitQA.cxx:193
 AliAnalysisTaskAODFilterBitQA.cxx:194
 AliAnalysisTaskAODFilterBitQA.cxx:195
 AliAnalysisTaskAODFilterBitQA.cxx:196
 AliAnalysisTaskAODFilterBitQA.cxx:197
 AliAnalysisTaskAODFilterBitQA.cxx:198
 AliAnalysisTaskAODFilterBitQA.cxx:199
 AliAnalysisTaskAODFilterBitQA.cxx:200
 AliAnalysisTaskAODFilterBitQA.cxx:201
 AliAnalysisTaskAODFilterBitQA.cxx:202
 AliAnalysisTaskAODFilterBitQA.cxx:203
 AliAnalysisTaskAODFilterBitQA.cxx:204
 AliAnalysisTaskAODFilterBitQA.cxx:205
 AliAnalysisTaskAODFilterBitQA.cxx:206
 AliAnalysisTaskAODFilterBitQA.cxx:207
 AliAnalysisTaskAODFilterBitQA.cxx:208
 AliAnalysisTaskAODFilterBitQA.cxx:209
 AliAnalysisTaskAODFilterBitQA.cxx:210
 AliAnalysisTaskAODFilterBitQA.cxx:211
 AliAnalysisTaskAODFilterBitQA.cxx:212
 AliAnalysisTaskAODFilterBitQA.cxx:213
 AliAnalysisTaskAODFilterBitQA.cxx:214
 AliAnalysisTaskAODFilterBitQA.cxx:215
 AliAnalysisTaskAODFilterBitQA.cxx:216
 AliAnalysisTaskAODFilterBitQA.cxx:217
 AliAnalysisTaskAODFilterBitQA.cxx:218
 AliAnalysisTaskAODFilterBitQA.cxx:219
 AliAnalysisTaskAODFilterBitQA.cxx:220
 AliAnalysisTaskAODFilterBitQA.cxx:221
 AliAnalysisTaskAODFilterBitQA.cxx:222
 AliAnalysisTaskAODFilterBitQA.cxx:223
 AliAnalysisTaskAODFilterBitQA.cxx:224
 AliAnalysisTaskAODFilterBitQA.cxx:225
 AliAnalysisTaskAODFilterBitQA.cxx:226
 AliAnalysisTaskAODFilterBitQA.cxx:227
 AliAnalysisTaskAODFilterBitQA.cxx:228
 AliAnalysisTaskAODFilterBitQA.cxx:229
 AliAnalysisTaskAODFilterBitQA.cxx:230
 AliAnalysisTaskAODFilterBitQA.cxx:231
 AliAnalysisTaskAODFilterBitQA.cxx:232
 AliAnalysisTaskAODFilterBitQA.cxx:233
 AliAnalysisTaskAODFilterBitQA.cxx:234
 AliAnalysisTaskAODFilterBitQA.cxx:235
 AliAnalysisTaskAODFilterBitQA.cxx:236
 AliAnalysisTaskAODFilterBitQA.cxx:237
 AliAnalysisTaskAODFilterBitQA.cxx:238
 AliAnalysisTaskAODFilterBitQA.cxx:239
 AliAnalysisTaskAODFilterBitQA.cxx:240
 AliAnalysisTaskAODFilterBitQA.cxx:241
 AliAnalysisTaskAODFilterBitQA.cxx:242
 AliAnalysisTaskAODFilterBitQA.cxx:243
 AliAnalysisTaskAODFilterBitQA.cxx:244
 AliAnalysisTaskAODFilterBitQA.cxx:245
 AliAnalysisTaskAODFilterBitQA.cxx:246
 AliAnalysisTaskAODFilterBitQA.cxx:247
 AliAnalysisTaskAODFilterBitQA.cxx:248
 AliAnalysisTaskAODFilterBitQA.cxx:249
 AliAnalysisTaskAODFilterBitQA.cxx:250
 AliAnalysisTaskAODFilterBitQA.cxx:251
 AliAnalysisTaskAODFilterBitQA.cxx:252
 AliAnalysisTaskAODFilterBitQA.cxx:253
 AliAnalysisTaskAODFilterBitQA.cxx:254
 AliAnalysisTaskAODFilterBitQA.cxx:255
 AliAnalysisTaskAODFilterBitQA.cxx:256
 AliAnalysisTaskAODFilterBitQA.cxx:257
 AliAnalysisTaskAODFilterBitQA.cxx:258
 AliAnalysisTaskAODFilterBitQA.cxx:259
 AliAnalysisTaskAODFilterBitQA.cxx:260
 AliAnalysisTaskAODFilterBitQA.cxx:261
 AliAnalysisTaskAODFilterBitQA.cxx:262
 AliAnalysisTaskAODFilterBitQA.cxx:263
 AliAnalysisTaskAODFilterBitQA.cxx:264
 AliAnalysisTaskAODFilterBitQA.cxx:265
 AliAnalysisTaskAODFilterBitQA.cxx:266
 AliAnalysisTaskAODFilterBitQA.cxx:267
 AliAnalysisTaskAODFilterBitQA.cxx:268
 AliAnalysisTaskAODFilterBitQA.cxx:269
 AliAnalysisTaskAODFilterBitQA.cxx:270
 AliAnalysisTaskAODFilterBitQA.cxx:271
 AliAnalysisTaskAODFilterBitQA.cxx:272
 AliAnalysisTaskAODFilterBitQA.cxx:273
 AliAnalysisTaskAODFilterBitQA.cxx:274
 AliAnalysisTaskAODFilterBitQA.cxx:275
 AliAnalysisTaskAODFilterBitQA.cxx:276
 AliAnalysisTaskAODFilterBitQA.cxx:277
 AliAnalysisTaskAODFilterBitQA.cxx:278
 AliAnalysisTaskAODFilterBitQA.cxx:279
 AliAnalysisTaskAODFilterBitQA.cxx:280
 AliAnalysisTaskAODFilterBitQA.cxx:281
 AliAnalysisTaskAODFilterBitQA.cxx:282
 AliAnalysisTaskAODFilterBitQA.cxx:283
 AliAnalysisTaskAODFilterBitQA.cxx:284
 AliAnalysisTaskAODFilterBitQA.cxx:285
 AliAnalysisTaskAODFilterBitQA.cxx:286
 AliAnalysisTaskAODFilterBitQA.cxx:287
 AliAnalysisTaskAODFilterBitQA.cxx:288
 AliAnalysisTaskAODFilterBitQA.cxx:289
 AliAnalysisTaskAODFilterBitQA.cxx:290
 AliAnalysisTaskAODFilterBitQA.cxx:291
 AliAnalysisTaskAODFilterBitQA.cxx:292
 AliAnalysisTaskAODFilterBitQA.cxx:293
 AliAnalysisTaskAODFilterBitQA.cxx:294
 AliAnalysisTaskAODFilterBitQA.cxx:295
 AliAnalysisTaskAODFilterBitQA.cxx:296
 AliAnalysisTaskAODFilterBitQA.cxx:297
 AliAnalysisTaskAODFilterBitQA.cxx:298
 AliAnalysisTaskAODFilterBitQA.cxx:299
 AliAnalysisTaskAODFilterBitQA.cxx:300
 AliAnalysisTaskAODFilterBitQA.cxx:301
 AliAnalysisTaskAODFilterBitQA.cxx:302
 AliAnalysisTaskAODFilterBitQA.cxx:303
 AliAnalysisTaskAODFilterBitQA.cxx:304
 AliAnalysisTaskAODFilterBitQA.cxx:305
 AliAnalysisTaskAODFilterBitQA.cxx:306
 AliAnalysisTaskAODFilterBitQA.cxx:307
 AliAnalysisTaskAODFilterBitQA.cxx:308
 AliAnalysisTaskAODFilterBitQA.cxx:309
 AliAnalysisTaskAODFilterBitQA.cxx:310
 AliAnalysisTaskAODFilterBitQA.cxx:311
 AliAnalysisTaskAODFilterBitQA.cxx:312
 AliAnalysisTaskAODFilterBitQA.cxx:313
 AliAnalysisTaskAODFilterBitQA.cxx:314
 AliAnalysisTaskAODFilterBitQA.cxx:315
 AliAnalysisTaskAODFilterBitQA.cxx:316
 AliAnalysisTaskAODFilterBitQA.cxx:317
 AliAnalysisTaskAODFilterBitQA.cxx:318
 AliAnalysisTaskAODFilterBitQA.cxx:319
 AliAnalysisTaskAODFilterBitQA.cxx:320
 AliAnalysisTaskAODFilterBitQA.cxx:321
 AliAnalysisTaskAODFilterBitQA.cxx:322
 AliAnalysisTaskAODFilterBitQA.cxx:323
 AliAnalysisTaskAODFilterBitQA.cxx:324
 AliAnalysisTaskAODFilterBitQA.cxx:325
 AliAnalysisTaskAODFilterBitQA.cxx:326
 AliAnalysisTaskAODFilterBitQA.cxx:327
 AliAnalysisTaskAODFilterBitQA.cxx:328
 AliAnalysisTaskAODFilterBitQA.cxx:329
 AliAnalysisTaskAODFilterBitQA.cxx:330
 AliAnalysisTaskAODFilterBitQA.cxx:331
 AliAnalysisTaskAODFilterBitQA.cxx:332
 AliAnalysisTaskAODFilterBitQA.cxx:333
 AliAnalysisTaskAODFilterBitQA.cxx:334
 AliAnalysisTaskAODFilterBitQA.cxx:335
 AliAnalysisTaskAODFilterBitQA.cxx:336
 AliAnalysisTaskAODFilterBitQA.cxx:337
 AliAnalysisTaskAODFilterBitQA.cxx:338
 AliAnalysisTaskAODFilterBitQA.cxx:339
 AliAnalysisTaskAODFilterBitQA.cxx:340
 AliAnalysisTaskAODFilterBitQA.cxx:341
 AliAnalysisTaskAODFilterBitQA.cxx:342
 AliAnalysisTaskAODFilterBitQA.cxx:343
 AliAnalysisTaskAODFilterBitQA.cxx:344
 AliAnalysisTaskAODFilterBitQA.cxx:345
 AliAnalysisTaskAODFilterBitQA.cxx:346
 AliAnalysisTaskAODFilterBitQA.cxx:347
 AliAnalysisTaskAODFilterBitQA.cxx:348
 AliAnalysisTaskAODFilterBitQA.cxx:349
 AliAnalysisTaskAODFilterBitQA.cxx:350
 AliAnalysisTaskAODFilterBitQA.cxx:351
 AliAnalysisTaskAODFilterBitQA.cxx:352
 AliAnalysisTaskAODFilterBitQA.cxx:353
 AliAnalysisTaskAODFilterBitQA.cxx:354
 AliAnalysisTaskAODFilterBitQA.cxx:355
 AliAnalysisTaskAODFilterBitQA.cxx:356
 AliAnalysisTaskAODFilterBitQA.cxx:357
 AliAnalysisTaskAODFilterBitQA.cxx:358
 AliAnalysisTaskAODFilterBitQA.cxx:359
 AliAnalysisTaskAODFilterBitQA.cxx:360
 AliAnalysisTaskAODFilterBitQA.cxx:361
 AliAnalysisTaskAODFilterBitQA.cxx:362
 AliAnalysisTaskAODFilterBitQA.cxx:363
 AliAnalysisTaskAODFilterBitQA.cxx:364
 AliAnalysisTaskAODFilterBitQA.cxx:365
 AliAnalysisTaskAODFilterBitQA.cxx:366
 AliAnalysisTaskAODFilterBitQA.cxx:367
 AliAnalysisTaskAODFilterBitQA.cxx:368
 AliAnalysisTaskAODFilterBitQA.cxx:369
 AliAnalysisTaskAODFilterBitQA.cxx:370
 AliAnalysisTaskAODFilterBitQA.cxx:371
 AliAnalysisTaskAODFilterBitQA.cxx:372
 AliAnalysisTaskAODFilterBitQA.cxx:373
 AliAnalysisTaskAODFilterBitQA.cxx:374
 AliAnalysisTaskAODFilterBitQA.cxx:375
 AliAnalysisTaskAODFilterBitQA.cxx:376
 AliAnalysisTaskAODFilterBitQA.cxx:377
 AliAnalysisTaskAODFilterBitQA.cxx:378
 AliAnalysisTaskAODFilterBitQA.cxx:379
 AliAnalysisTaskAODFilterBitQA.cxx:380
 AliAnalysisTaskAODFilterBitQA.cxx:381
 AliAnalysisTaskAODFilterBitQA.cxx:382
 AliAnalysisTaskAODFilterBitQA.cxx:383
 AliAnalysisTaskAODFilterBitQA.cxx:384
 AliAnalysisTaskAODFilterBitQA.cxx:385
 AliAnalysisTaskAODFilterBitQA.cxx:386
 AliAnalysisTaskAODFilterBitQA.cxx:387
 AliAnalysisTaskAODFilterBitQA.cxx:388
 AliAnalysisTaskAODFilterBitQA.cxx:389
 AliAnalysisTaskAODFilterBitQA.cxx:390
 AliAnalysisTaskAODFilterBitQA.cxx:391
 AliAnalysisTaskAODFilterBitQA.cxx:392
 AliAnalysisTaskAODFilterBitQA.cxx:393
 AliAnalysisTaskAODFilterBitQA.cxx:394
 AliAnalysisTaskAODFilterBitQA.cxx:395
 AliAnalysisTaskAODFilterBitQA.cxx:396
 AliAnalysisTaskAODFilterBitQA.cxx:397
 AliAnalysisTaskAODFilterBitQA.cxx:398
 AliAnalysisTaskAODFilterBitQA.cxx:399
 AliAnalysisTaskAODFilterBitQA.cxx:400
 AliAnalysisTaskAODFilterBitQA.cxx:401
 AliAnalysisTaskAODFilterBitQA.cxx:402
 AliAnalysisTaskAODFilterBitQA.cxx:403
 AliAnalysisTaskAODFilterBitQA.cxx:404
 AliAnalysisTaskAODFilterBitQA.cxx:405
 AliAnalysisTaskAODFilterBitQA.cxx:406
 AliAnalysisTaskAODFilterBitQA.cxx:407
 AliAnalysisTaskAODFilterBitQA.cxx:408
 AliAnalysisTaskAODFilterBitQA.cxx:409
 AliAnalysisTaskAODFilterBitQA.cxx:410
 AliAnalysisTaskAODFilterBitQA.cxx:411
 AliAnalysisTaskAODFilterBitQA.cxx:412
 AliAnalysisTaskAODFilterBitQA.cxx:413
 AliAnalysisTaskAODFilterBitQA.cxx:414
 AliAnalysisTaskAODFilterBitQA.cxx:415
 AliAnalysisTaskAODFilterBitQA.cxx:416
 AliAnalysisTaskAODFilterBitQA.cxx:417
 AliAnalysisTaskAODFilterBitQA.cxx:418
 AliAnalysisTaskAODFilterBitQA.cxx:419
 AliAnalysisTaskAODFilterBitQA.cxx:420
 AliAnalysisTaskAODFilterBitQA.cxx:421
 AliAnalysisTaskAODFilterBitQA.cxx:422
 AliAnalysisTaskAODFilterBitQA.cxx:423
 AliAnalysisTaskAODFilterBitQA.cxx:424
 AliAnalysisTaskAODFilterBitQA.cxx:425
 AliAnalysisTaskAODFilterBitQA.cxx:426
 AliAnalysisTaskAODFilterBitQA.cxx:427
 AliAnalysisTaskAODFilterBitQA.cxx:428
 AliAnalysisTaskAODFilterBitQA.cxx:429
 AliAnalysisTaskAODFilterBitQA.cxx:430
 AliAnalysisTaskAODFilterBitQA.cxx:431
 AliAnalysisTaskAODFilterBitQA.cxx:432
 AliAnalysisTaskAODFilterBitQA.cxx:433
 AliAnalysisTaskAODFilterBitQA.cxx:434
 AliAnalysisTaskAODFilterBitQA.cxx:435
 AliAnalysisTaskAODFilterBitQA.cxx:436
 AliAnalysisTaskAODFilterBitQA.cxx:437
 AliAnalysisTaskAODFilterBitQA.cxx:438
 AliAnalysisTaskAODFilterBitQA.cxx:439
 AliAnalysisTaskAODFilterBitQA.cxx:440
 AliAnalysisTaskAODFilterBitQA.cxx:441
 AliAnalysisTaskAODFilterBitQA.cxx:442
 AliAnalysisTaskAODFilterBitQA.cxx:443
 AliAnalysisTaskAODFilterBitQA.cxx:444
 AliAnalysisTaskAODFilterBitQA.cxx:445
 AliAnalysisTaskAODFilterBitQA.cxx:446
 AliAnalysisTaskAODFilterBitQA.cxx:447
 AliAnalysisTaskAODFilterBitQA.cxx:448
 AliAnalysisTaskAODFilterBitQA.cxx:449
 AliAnalysisTaskAODFilterBitQA.cxx:450
 AliAnalysisTaskAODFilterBitQA.cxx:451
 AliAnalysisTaskAODFilterBitQA.cxx:452
 AliAnalysisTaskAODFilterBitQA.cxx:453
 AliAnalysisTaskAODFilterBitQA.cxx:454
 AliAnalysisTaskAODFilterBitQA.cxx:455
 AliAnalysisTaskAODFilterBitQA.cxx:456
 AliAnalysisTaskAODFilterBitQA.cxx:457