#include "TChain.h"
#include "TTree.h"
#include "TLegend.h"
#include "TH1F.h"
#include "TH2F.h"
#include "TH3F.h"
#include "TCanvas.h"
#include "AliAnalysisTask.h"
#include "AliAnalysisManager.h"
#include "AliAODTrack.h"
#include "AliAODMCParticle.h"
#include "AliVParticle.h"
#include "AliAODEvent.h"
#include "AliAODInputHandler.h"
#include "AliAnalysisTaskSpectraBoth.h"
#include "AliAnalysisTaskESDfilter.h"
#include "AliAnalysisDataContainer.h"
#include "AliSpectraBothHistoManager.h"
#include "AliSpectraBothTrackCuts.h"
#include "AliSpectraBothEventCuts.h"
#include "AliCentrality.h"
#include "TProof.h"
#include "AliPID.h"
#include "AliVEvent.h"
#include "AliESDEvent.h"
#include "AliPIDResponse.h"
#include "AliStack.h"
#include "AliSpectraBothPID.h"
#include "AliGenEventHeader.h"
#include <TMCProcess.h>
#include <iostream>
using namespace AliSpectraNameSpaceBoth;
using namespace std;
ClassImp(AliAnalysisTaskSpectraBoth)
AliAnalysisTaskSpectraBoth::AliAnalysisTaskSpectraBoth(const char *name) : AliAnalysisTaskSE(name), fAOD(0), fHistMan(0), fTrackCuts(0), fEventCuts(0), fPID(0), fIsMC(0), fNRebin(0),fUseMinSigma(0),fCuts(0),fdotheMCLoopAfterEventCuts(0),fmakePIDQAhisto(1),fMotherWDPDGcode(-1)
{
DefineInput(0, TChain::Class());
DefineOutput(1, AliSpectraBothHistoManager::Class());
DefineOutput(2, AliSpectraBothEventCuts::Class());
DefineOutput(3, AliSpectraBothTrackCuts::Class());
DefineOutput(4, AliSpectraBothPID::Class());
fNRebin=0;
}
void AliAnalysisTaskSpectraBoth::UserCreateOutputObjects()
{
fHistMan = new AliSpectraBothHistoManager("SpectraHistos",fNRebin,fmakePIDQAhisto);
if (!fTrackCuts) AliFatal("Track Cuts should be set in the steering macro");
if (!fEventCuts) AliFatal("Event Cuts should be set in the steering macro");
if (!fPID) AliFatal("PID object should be set in the steering macro");
fTrackCuts->SetAliESDtrackCuts(fCuts);
fEventCuts->InitHisto();
fTrackCuts->InitHisto();
PostData(1, fHistMan );
PostData(2, fEventCuts);
PostData(3, fTrackCuts);
PostData(4, fPID );
}
void AliAnalysisTaskSpectraBoth::UserExec(Option_t *)
{
Int_t ifAODEvent=AliSpectraBothTrackCuts::kotherobject;
fAOD = dynamic_cast<AliVEvent*>(InputEvent());
TString nameoftrack(fAOD->ClassName());
if(!nameoftrack.CompareTo("AliESDEvent"))
{
ifAODEvent=AliSpectraBothTrackCuts::kESDobject;
}
else if(!nameoftrack.CompareTo("AliAODEvent"))
{
ifAODEvent=AliSpectraBothTrackCuts::kAODobject;
}
else
AliFatal("Not processing AODs or ESDS") ;
if(fIsMC)
{
if(!fEventCuts->CheckMCProcessType(MCEvent()))
return ;
}
if(fdotheMCLoopAfterEventCuts)
if(!fEventCuts->IsSelected(fAOD,fTrackCuts,fIsMC,-100,fHistMan->GetEventStatHist()))
return;
TClonesArray *arrayMC = 0;
Int_t npar=0;
AliStack* stack=0x0;
Double_t mcZ=-100;
if (fIsMC)
{
TArrayF mcVertex(3);
mcVertex[0]=9999.; mcVertex[1]=9999.; mcVertex[2]=9999.;
AliMCEvent* mcEvent=(AliMCEvent*)MCEvent();
if (!mcEvent)
{
AliFatal("Error: MC particles branch not found!\n");
}
AliHeader* header = mcEvent->Header();
if (!header)
{
AliDebug(AliLog::kError, "Header not available");
return;
}
AliGenEventHeader* genHeader = header->GenEventHeader();
if(genHeader)
{
genHeader->PrimaryVertex(mcVertex);
mcZ=mcVertex[2];
}
if(ifAODEvent==AliSpectraBothTrackCuts::kAODobject)
{
arrayMC = (TClonesArray*) fAOD->GetList()->FindObject(AliAODMCParticle::StdBranchName());
if (!arrayMC)
{
AliFatal("Error: MC particles branch not found!\n");
}
Int_t nMC = arrayMC->GetEntries();
for (Int_t iMC = 0; iMC < nMC; iMC++)
{
AliAODMCParticle *partMC = (AliAODMCParticle*) arrayMC->At(iMC);
if(!partMC->Charge()) continue;
if(partMC->Eta() > fTrackCuts->GetEtaMin() && partMC->Eta() < fTrackCuts->GetEtaMax())
fHistMan->GetPtHistogram(kHistPtGen)->Fill(partMC->Pt(),partMC->IsPhysicalPrimary());
if(partMC->Y() > fTrackCuts->GetYMax()|| partMC->Y() < fTrackCuts->GetYMin() )
continue;
if(partMC->IsPhysicalPrimary())
npar++;
Int_t charge = partMC->Charge() > 0 ? kChPos : kChNeg ;
Int_t id = fPID->GetParticleSpecie(partMC);
if(id != kSpUndefined)
{
fHistMan->GetHistogram2D(kHistPtGenTruePrimary,id,charge)->Fill(partMC->Pt(),partMC->IsPhysicalPrimary());
}
}
}
if(ifAODEvent==AliSpectraBothTrackCuts::kESDobject)
{
stack = mcEvent->Stack();
Int_t nMC = stack->GetNtrack();
for (Int_t iMC = 0; iMC < nMC; iMC++)
{
TParticle *partMC = stack->Particle(iMC);
if(!partMC)
continue;
if(!partMC->GetPDG(0))
continue;
if(TMath::Abs(partMC->GetPDG(0)->Charge()/3.0)<0.01)
continue;
if(partMC->Eta() > fTrackCuts->GetEtaMin() && partMC->Eta() < fTrackCuts->GetEtaMax())
fHistMan->GetPtHistogram(kHistPtGen)->Fill(partMC->Pt(),stack->IsPhysicalPrimary(iMC));
if(partMC->Y() > fTrackCuts->GetYMax() ||partMC->Y() < fTrackCuts->GetYMin() )
continue;
if(stack->IsPhysicalPrimary(iMC))
npar++;
Int_t charge = partMC->GetPDG(0)->Charge()/3.0 > 0 ? kChPos : kChNeg ;
Int_t id = fPID->GetParticleSpecie(partMC);
if(id != kSpUndefined)
{
fHistMan->GetHistogram2D(kHistPtGenTruePrimary,id,charge)->Fill(partMC->Pt(),stack->IsPhysicalPrimary(iMC));
}
}
}
}
if(!fdotheMCLoopAfterEventCuts)
if(!fEventCuts->IsSelected(fAOD,fTrackCuts,fIsMC,mcZ,fHistMan->GetEventStatHist()))
return;
Int_t ntracks=0;
for (Int_t iTracks = 0; iTracks < fAOD->GetNumberOfTracks(); iTracks++)
{
AliVTrack* track = dynamic_cast<AliVTrack*>(fAOD->GetTrack(iTracks));
AliAODTrack* aodtrack=0;
AliESDtrack* esdtrack=0;
Float_t dca=-999.;
Float_t dcaz=-999.;
Short_t ncls=-1;
Float_t chi2perndf=-1.0;
if(ifAODEvent==AliSpectraBothTrackCuts::kESDobject)
{
esdtrack=dynamic_cast<AliESDtrack*>(track);
if(!esdtrack)
continue;
esdtrack->GetImpactParameters(dca,dcaz);
ncls=esdtrack->GetTPCNcls();
if ( ncls > 5)
chi2perndf=(esdtrack->GetTPCchi2()/Float_t(ncls - 5));
else
chi2perndf=-1;
}
else if (ifAODEvent==AliSpectraBothTrackCuts::kAODobject)
{
aodtrack=dynamic_cast<AliAODTrack*>(track);
if(!aodtrack)
continue;
dca=aodtrack->DCA();
dcaz=aodtrack->ZAtDCA();
ncls=aodtrack->GetTPCNcls();
chi2perndf=aodtrack->Chi2perNDF();
}
else
continue;
if (!fTrackCuts->IsSelected(track,kTRUE))
continue;
ntracks++;
if(fmakePIDQAhisto)
fPID->FillQAHistos(fHistMan, track, fTrackCuts);
if(dca==-999.)
{
Double_t d[2], covd[3];
AliVTrack* track_clone=(AliVTrack*)track->Clone("track_clone");
Bool_t isDCA = track_clone->PropagateToDCA(fAOD->GetPrimaryVertex(),fAOD->GetMagneticField(),9999.,d,covd);
delete track_clone;
if(!isDCA)
d[0]=-999.;
dca=d[0];
dcaz=d[1];
}
fHistMan->GetPtHistogram(kHistPtRec)->Fill(track->Pt(),dca);
Bool_t rec[3]={false,false,false};
Bool_t sel[3]={false,false,false};
Int_t idRec = fPID->GetParticleSpecie(fHistMan,track, fTrackCuts,rec);
for(int irec=kSpPion;irec<kNSpecies;irec++)
{
if(fUseMinSigma)
{
if(irec>kSpPion)
break;
}
else
{
if(!rec[irec])
idRec = kSpUndefined;
else
idRec=irec;
}
Int_t charge = track->Charge() > 0 ? kChPos : kChNeg;
if(idRec != kSpUndefined && fTrackCuts->CheckYCut ((BothParticleSpecies_t)idRec))
{
fHistMan->GetHistogram2D(kHistPtRecSigma,idRec,charge)->Fill(track->Pt(),dca);
if(fTrackCuts->GetMakeQAhisto())
{
fTrackCuts->GetHistoDCAzQA()->Fill(idRec,track->Pt(),dcaz);
fTrackCuts->GetHistoNclustersQA()->Fill(idRec,track->Pt(),ncls);
fTrackCuts->GetHistochi2perNDFQA()->Fill(idRec,track->Pt(),chi2perndf);
}
sel[idRec]=true;
}
if (arrayMC||stack)
{
Bool_t isPrimary = kFALSE;
Bool_t isSecondaryMaterial = kFALSE;
Bool_t isSecondaryWeak = kFALSE;
Int_t idGen =kSpUndefined;
Int_t pdgcode=0;
Int_t motherpdg=-1;
if (ifAODEvent==AliSpectraBothTrackCuts::kAODobject)
{
AliAODMCParticle *partMC = (AliAODMCParticle*) arrayMC->At(TMath::Abs(track->GetLabel()));
if (!partMC)
{
AliError("Cannot get MC particle");
continue;
}
isPrimary = partMC->IsPhysicalPrimary();
isSecondaryWeak = partMC->IsSecondaryFromWeakDecay();
isSecondaryMaterial = partMC->IsSecondaryFromMaterial();
if(!isPrimary&&!isSecondaryWeak&&!isSecondaryMaterial)
{
AliError("old tagging");
Int_t mfl=-999,codemoth=-999;
Int_t indexMoth=partMC->GetMother();
if(indexMoth>=0)
{
AliAODMCParticle* moth = (AliAODMCParticle*) arrayMC->At(indexMoth);
codemoth = TMath::Abs(moth->GetPdgCode());
mfl = Int_t (codemoth/ TMath::Power(10, Int_t(TMath::Log10(codemoth))));
}
if(mfl==3)
isSecondaryWeak = kTRUE;
else
isSecondaryMaterial = kTRUE;
}
if(isSecondaryWeak)
{
Int_t indexMoth=partMC->GetMother();
if(indexMoth>=0)
{
AliAODMCParticle* moth = (AliAODMCParticle*) arrayMC->At(indexMoth);
if(moth)
motherpdg=TMath::Abs(moth->GetPdgCode());
}
}
idGen = fPID->GetParticleSpecie(partMC);
pdgcode=partMC->GetPdgCode();
}
else if (ifAODEvent==AliSpectraBothTrackCuts::kESDobject)
{
TParticle *partMC =stack->Particle(TMath::Abs(track->GetLabel()));
if (!partMC)
{
AliError("Cannot get MC particle");
continue;
}
isPrimary = stack->IsPhysicalPrimary(TMath::Abs(track->GetLabel()));
isSecondaryWeak = stack->IsSecondaryFromWeakDecay(TMath::Abs(track->GetLabel()));
isSecondaryMaterial = stack->IsSecondaryFromMaterial(TMath::Abs(track->GetLabel()));
if(isSecondaryWeak)
{
TParticle* moth=stack->Particle(TMath::Abs(partMC->GetFirstMother()));
if(moth)
motherpdg = TMath::Abs(moth->GetPdgCode());
}
idGen = fPID->GetParticleSpecie(partMC);
pdgcode=partMC->GetPdgCode();
}
else
return;
if (isPrimary&&irec==kSpPion)
fHistMan->GetPtHistogram(kHistPtRecPrimaryAll)->Fill(track->Pt(),dca);
if(idRec == kSpUndefined)
continue;
if(!fTrackCuts->CheckYCut ((BothParticleSpecies_t)idRec)) continue;
if (idRec == idGen) fHistMan->GetHistogram2D(kHistPtRecTrue, idGen, charge)->Fill(track->Pt(),dca);
if (isPrimary)
{
fHistMan->GetHistogram2D(kHistPtRecSigmaPrimary, idRec, charge)->Fill(track->Pt(),dca);
if(idGen != kSpUndefined)
{
fHistMan->GetHistogram2D(kHistPtRecPrimary, idGen, charge)->Fill(track->Pt(),dca);
if (idRec == idGen)
fHistMan->GetHistogram2D(kHistPtRecTruePrimary, idGen, charge)->Fill(track->Pt(),dca);
}
}
if ( pdgcode == 13 && idRec == kSpPion)
{
fHistMan->GetPtHistogram(kHistPtRecTrueMuonPlus)->Fill(track->Pt(),dca);
if(isPrimary)
fHistMan->GetPtHistogram(kHistPtRecTruePrimaryMuonPlus)->Fill(track->Pt(),dca);
}
if ( pdgcode == -13 && idRec == kSpPion)
{
fHistMan->GetPtHistogram(kHistPtRecTrueMuonMinus)->Fill(track->Pt(),dca);
if (isPrimary)
{
fHistMan->GetPtHistogram(kHistPtRecTruePrimaryMuonMinus)->Fill(track->Pt(),dca);
}
}
if(isSecondaryWeak)
{
if(fMotherWDPDGcode>0)
{
if(motherpdg==fMotherWDPDGcode)
fHistMan->GetHistogram2D(kHistPtRecSigmaSecondaryWeakDecay, idRec, charge)->Fill(track->Pt(),dca);
}
else
fHistMan->GetHistogram2D(kHistPtRecSigmaSecondaryWeakDecay, idRec, charge)->Fill(track->Pt(),dca);
}
if(isSecondaryMaterial)
fHistMan->GetHistogram2D(kHistPtRecSigmaSecondaryMaterial , idRec, charge)->Fill(track->Pt(),dca);
}
}
if(sel[0]&&sel[1]&&sel[2])
fHistMan->GetPtHistogram("hHistDoubleCounts")->Fill(track->Pt(),0);
else if(sel[0]&&sel[1])
fHistMan->GetPtHistogram("hHistDoubleCounts")->Fill(track->Pt(),1);
else if(sel[0]&&sel[2])
fHistMan->GetPtHistogram("hHistDoubleCounts")->Fill(track->Pt(),2);
else if(sel[1]&&sel[2])
fHistMan->GetPtHistogram("hHistDoubleCounts")->Fill(track->Pt(),3);
}
fHistMan->GetGenMulvsRawMulHistogram("hHistGenMulvsRawMul")->Fill(npar,ntracks);
PostData(1, fHistMan );
PostData(2, fEventCuts);
PostData(3, fTrackCuts);
PostData(4, fPID );
}
void AliAnalysisTaskSpectraBoth::Terminate(Option_t *)
{
}
AliAnalysisTaskSpectraBoth.cxx:1 AliAnalysisTaskSpectraBoth.cxx:2 AliAnalysisTaskSpectraBoth.cxx:3 AliAnalysisTaskSpectraBoth.cxx:4 AliAnalysisTaskSpectraBoth.cxx:5 AliAnalysisTaskSpectraBoth.cxx:6 AliAnalysisTaskSpectraBoth.cxx:7 AliAnalysisTaskSpectraBoth.cxx:8 AliAnalysisTaskSpectraBoth.cxx:9 AliAnalysisTaskSpectraBoth.cxx:10 AliAnalysisTaskSpectraBoth.cxx:11 AliAnalysisTaskSpectraBoth.cxx:12 AliAnalysisTaskSpectraBoth.cxx:13 AliAnalysisTaskSpectraBoth.cxx:14 AliAnalysisTaskSpectraBoth.cxx:15 AliAnalysisTaskSpectraBoth.cxx:16 AliAnalysisTaskSpectraBoth.cxx:17 AliAnalysisTaskSpectraBoth.cxx:18 AliAnalysisTaskSpectraBoth.cxx:19 AliAnalysisTaskSpectraBoth.cxx:20 AliAnalysisTaskSpectraBoth.cxx:21 AliAnalysisTaskSpectraBoth.cxx:22 AliAnalysisTaskSpectraBoth.cxx:23 AliAnalysisTaskSpectraBoth.cxx:24 AliAnalysisTaskSpectraBoth.cxx:25 AliAnalysisTaskSpectraBoth.cxx:26 AliAnalysisTaskSpectraBoth.cxx:27 AliAnalysisTaskSpectraBoth.cxx:28 AliAnalysisTaskSpectraBoth.cxx:29 AliAnalysisTaskSpectraBoth.cxx:30 AliAnalysisTaskSpectraBoth.cxx:31 AliAnalysisTaskSpectraBoth.cxx:32 AliAnalysisTaskSpectraBoth.cxx:33 AliAnalysisTaskSpectraBoth.cxx:34 AliAnalysisTaskSpectraBoth.cxx:35 AliAnalysisTaskSpectraBoth.cxx:36 AliAnalysisTaskSpectraBoth.cxx:37 AliAnalysisTaskSpectraBoth.cxx:38 AliAnalysisTaskSpectraBoth.cxx:39 AliAnalysisTaskSpectraBoth.cxx:40 AliAnalysisTaskSpectraBoth.cxx:41 AliAnalysisTaskSpectraBoth.cxx:42 AliAnalysisTaskSpectraBoth.cxx:43 AliAnalysisTaskSpectraBoth.cxx:44 AliAnalysisTaskSpectraBoth.cxx:45 AliAnalysisTaskSpectraBoth.cxx:46 AliAnalysisTaskSpectraBoth.cxx:47 AliAnalysisTaskSpectraBoth.cxx:48 AliAnalysisTaskSpectraBoth.cxx:49 AliAnalysisTaskSpectraBoth.cxx:50 AliAnalysisTaskSpectraBoth.cxx:51 AliAnalysisTaskSpectraBoth.cxx:52 AliAnalysisTaskSpectraBoth.cxx:53 AliAnalysisTaskSpectraBoth.cxx:54 AliAnalysisTaskSpectraBoth.cxx:55 AliAnalysisTaskSpectraBoth.cxx:56 AliAnalysisTaskSpectraBoth.cxx:57 AliAnalysisTaskSpectraBoth.cxx:58 AliAnalysisTaskSpectraBoth.cxx:59 AliAnalysisTaskSpectraBoth.cxx:60 AliAnalysisTaskSpectraBoth.cxx:61 AliAnalysisTaskSpectraBoth.cxx:62 AliAnalysisTaskSpectraBoth.cxx:63 AliAnalysisTaskSpectraBoth.cxx:64 AliAnalysisTaskSpectraBoth.cxx:65 AliAnalysisTaskSpectraBoth.cxx:66 AliAnalysisTaskSpectraBoth.cxx:67 AliAnalysisTaskSpectraBoth.cxx:68 AliAnalysisTaskSpectraBoth.cxx:69 AliAnalysisTaskSpectraBoth.cxx:70 AliAnalysisTaskSpectraBoth.cxx:71 AliAnalysisTaskSpectraBoth.cxx:72 AliAnalysisTaskSpectraBoth.cxx:73 AliAnalysisTaskSpectraBoth.cxx:74 AliAnalysisTaskSpectraBoth.cxx:75 AliAnalysisTaskSpectraBoth.cxx:76 AliAnalysisTaskSpectraBoth.cxx:77 AliAnalysisTaskSpectraBoth.cxx:78 AliAnalysisTaskSpectraBoth.cxx:79 AliAnalysisTaskSpectraBoth.cxx:80 AliAnalysisTaskSpectraBoth.cxx:81 AliAnalysisTaskSpectraBoth.cxx:82 AliAnalysisTaskSpectraBoth.cxx:83 AliAnalysisTaskSpectraBoth.cxx:84 AliAnalysisTaskSpectraBoth.cxx:85 AliAnalysisTaskSpectraBoth.cxx:86 AliAnalysisTaskSpectraBoth.cxx:87 AliAnalysisTaskSpectraBoth.cxx:88 AliAnalysisTaskSpectraBoth.cxx:89 AliAnalysisTaskSpectraBoth.cxx:90 AliAnalysisTaskSpectraBoth.cxx:91 AliAnalysisTaskSpectraBoth.cxx:92 AliAnalysisTaskSpectraBoth.cxx:93 AliAnalysisTaskSpectraBoth.cxx:94 AliAnalysisTaskSpectraBoth.cxx:95 AliAnalysisTaskSpectraBoth.cxx:96 AliAnalysisTaskSpectraBoth.cxx:97 AliAnalysisTaskSpectraBoth.cxx:98 AliAnalysisTaskSpectraBoth.cxx:99 AliAnalysisTaskSpectraBoth.cxx:100 AliAnalysisTaskSpectraBoth.cxx:101 AliAnalysisTaskSpectraBoth.cxx:102 AliAnalysisTaskSpectraBoth.cxx:103 AliAnalysisTaskSpectraBoth.cxx:104 AliAnalysisTaskSpectraBoth.cxx:105 AliAnalysisTaskSpectraBoth.cxx:106 AliAnalysisTaskSpectraBoth.cxx:107 AliAnalysisTaskSpectraBoth.cxx:108 AliAnalysisTaskSpectraBoth.cxx:109 AliAnalysisTaskSpectraBoth.cxx:110 AliAnalysisTaskSpectraBoth.cxx:111 AliAnalysisTaskSpectraBoth.cxx:112 AliAnalysisTaskSpectraBoth.cxx:113 AliAnalysisTaskSpectraBoth.cxx:114 AliAnalysisTaskSpectraBoth.cxx:115 AliAnalysisTaskSpectraBoth.cxx:116 AliAnalysisTaskSpectraBoth.cxx:117 AliAnalysisTaskSpectraBoth.cxx:118 AliAnalysisTaskSpectraBoth.cxx:119 AliAnalysisTaskSpectraBoth.cxx:120 AliAnalysisTaskSpectraBoth.cxx:121 AliAnalysisTaskSpectraBoth.cxx:122 AliAnalysisTaskSpectraBoth.cxx:123 AliAnalysisTaskSpectraBoth.cxx:124 AliAnalysisTaskSpectraBoth.cxx:125 AliAnalysisTaskSpectraBoth.cxx:126 AliAnalysisTaskSpectraBoth.cxx:127 AliAnalysisTaskSpectraBoth.cxx:128 AliAnalysisTaskSpectraBoth.cxx:129 AliAnalysisTaskSpectraBoth.cxx:130 AliAnalysisTaskSpectraBoth.cxx:131 AliAnalysisTaskSpectraBoth.cxx:132 AliAnalysisTaskSpectraBoth.cxx:133 AliAnalysisTaskSpectraBoth.cxx:134 AliAnalysisTaskSpectraBoth.cxx:135 AliAnalysisTaskSpectraBoth.cxx:136 AliAnalysisTaskSpectraBoth.cxx:137 AliAnalysisTaskSpectraBoth.cxx:138 AliAnalysisTaskSpectraBoth.cxx:139 AliAnalysisTaskSpectraBoth.cxx:140 AliAnalysisTaskSpectraBoth.cxx:141 AliAnalysisTaskSpectraBoth.cxx:142 AliAnalysisTaskSpectraBoth.cxx:143 AliAnalysisTaskSpectraBoth.cxx:144 AliAnalysisTaskSpectraBoth.cxx:145 AliAnalysisTaskSpectraBoth.cxx:146 AliAnalysisTaskSpectraBoth.cxx:147 AliAnalysisTaskSpectraBoth.cxx:148 AliAnalysisTaskSpectraBoth.cxx:149 AliAnalysisTaskSpectraBoth.cxx:150 AliAnalysisTaskSpectraBoth.cxx:151 AliAnalysisTaskSpectraBoth.cxx:152 AliAnalysisTaskSpectraBoth.cxx:153 AliAnalysisTaskSpectraBoth.cxx:154 AliAnalysisTaskSpectraBoth.cxx:155 AliAnalysisTaskSpectraBoth.cxx:156 AliAnalysisTaskSpectraBoth.cxx:157 AliAnalysisTaskSpectraBoth.cxx:158 AliAnalysisTaskSpectraBoth.cxx:159 AliAnalysisTaskSpectraBoth.cxx:160 AliAnalysisTaskSpectraBoth.cxx:161 AliAnalysisTaskSpectraBoth.cxx:162 AliAnalysisTaskSpectraBoth.cxx:163 AliAnalysisTaskSpectraBoth.cxx:164 AliAnalysisTaskSpectraBoth.cxx:165 AliAnalysisTaskSpectraBoth.cxx:166 AliAnalysisTaskSpectraBoth.cxx:167 AliAnalysisTaskSpectraBoth.cxx:168 AliAnalysisTaskSpectraBoth.cxx:169 AliAnalysisTaskSpectraBoth.cxx:170 AliAnalysisTaskSpectraBoth.cxx:171 AliAnalysisTaskSpectraBoth.cxx:172 AliAnalysisTaskSpectraBoth.cxx:173 AliAnalysisTaskSpectraBoth.cxx:174 AliAnalysisTaskSpectraBoth.cxx:175 AliAnalysisTaskSpectraBoth.cxx:176 AliAnalysisTaskSpectraBoth.cxx:177 AliAnalysisTaskSpectraBoth.cxx:178 AliAnalysisTaskSpectraBoth.cxx:179 AliAnalysisTaskSpectraBoth.cxx:180 AliAnalysisTaskSpectraBoth.cxx:181 AliAnalysisTaskSpectraBoth.cxx:182 AliAnalysisTaskSpectraBoth.cxx:183 AliAnalysisTaskSpectraBoth.cxx:184 AliAnalysisTaskSpectraBoth.cxx:185 AliAnalysisTaskSpectraBoth.cxx:186 AliAnalysisTaskSpectraBoth.cxx:187 AliAnalysisTaskSpectraBoth.cxx:188 AliAnalysisTaskSpectraBoth.cxx:189 AliAnalysisTaskSpectraBoth.cxx:190 AliAnalysisTaskSpectraBoth.cxx:191 AliAnalysisTaskSpectraBoth.cxx:192 AliAnalysisTaskSpectraBoth.cxx:193 AliAnalysisTaskSpectraBoth.cxx:194 AliAnalysisTaskSpectraBoth.cxx:195 AliAnalysisTaskSpectraBoth.cxx:196 AliAnalysisTaskSpectraBoth.cxx:197 AliAnalysisTaskSpectraBoth.cxx:198 AliAnalysisTaskSpectraBoth.cxx:199 AliAnalysisTaskSpectraBoth.cxx:200 AliAnalysisTaskSpectraBoth.cxx:201 AliAnalysisTaskSpectraBoth.cxx:202 AliAnalysisTaskSpectraBoth.cxx:203 AliAnalysisTaskSpectraBoth.cxx:204 AliAnalysisTaskSpectraBoth.cxx:205 AliAnalysisTaskSpectraBoth.cxx:206 AliAnalysisTaskSpectraBoth.cxx:207 AliAnalysisTaskSpectraBoth.cxx:208 AliAnalysisTaskSpectraBoth.cxx:209 AliAnalysisTaskSpectraBoth.cxx:210 AliAnalysisTaskSpectraBoth.cxx:211 AliAnalysisTaskSpectraBoth.cxx:212 AliAnalysisTaskSpectraBoth.cxx:213 AliAnalysisTaskSpectraBoth.cxx:214 AliAnalysisTaskSpectraBoth.cxx:215 AliAnalysisTaskSpectraBoth.cxx:216 AliAnalysisTaskSpectraBoth.cxx:217 AliAnalysisTaskSpectraBoth.cxx:218 AliAnalysisTaskSpectraBoth.cxx:219 AliAnalysisTaskSpectraBoth.cxx:220 AliAnalysisTaskSpectraBoth.cxx:221 AliAnalysisTaskSpectraBoth.cxx:222 AliAnalysisTaskSpectraBoth.cxx:223 AliAnalysisTaskSpectraBoth.cxx:224 AliAnalysisTaskSpectraBoth.cxx:225 AliAnalysisTaskSpectraBoth.cxx:226 AliAnalysisTaskSpectraBoth.cxx:227 AliAnalysisTaskSpectraBoth.cxx:228 AliAnalysisTaskSpectraBoth.cxx:229 AliAnalysisTaskSpectraBoth.cxx:230 AliAnalysisTaskSpectraBoth.cxx:231 AliAnalysisTaskSpectraBoth.cxx:232 AliAnalysisTaskSpectraBoth.cxx:233 AliAnalysisTaskSpectraBoth.cxx:234 AliAnalysisTaskSpectraBoth.cxx:235 AliAnalysisTaskSpectraBoth.cxx:236 AliAnalysisTaskSpectraBoth.cxx:237 AliAnalysisTaskSpectraBoth.cxx:238 AliAnalysisTaskSpectraBoth.cxx:239 AliAnalysisTaskSpectraBoth.cxx:240 AliAnalysisTaskSpectraBoth.cxx:241 AliAnalysisTaskSpectraBoth.cxx:242 AliAnalysisTaskSpectraBoth.cxx:243 AliAnalysisTaskSpectraBoth.cxx:244 AliAnalysisTaskSpectraBoth.cxx:245 AliAnalysisTaskSpectraBoth.cxx:246 AliAnalysisTaskSpectraBoth.cxx:247 AliAnalysisTaskSpectraBoth.cxx:248 AliAnalysisTaskSpectraBoth.cxx:249 AliAnalysisTaskSpectraBoth.cxx:250 AliAnalysisTaskSpectraBoth.cxx:251 AliAnalysisTaskSpectraBoth.cxx:252 AliAnalysisTaskSpectraBoth.cxx:253 AliAnalysisTaskSpectraBoth.cxx:254 AliAnalysisTaskSpectraBoth.cxx:255 AliAnalysisTaskSpectraBoth.cxx:256 AliAnalysisTaskSpectraBoth.cxx:257 AliAnalysisTaskSpectraBoth.cxx:258 AliAnalysisTaskSpectraBoth.cxx:259 AliAnalysisTaskSpectraBoth.cxx:260 AliAnalysisTaskSpectraBoth.cxx:261 AliAnalysisTaskSpectraBoth.cxx:262 AliAnalysisTaskSpectraBoth.cxx:263 AliAnalysisTaskSpectraBoth.cxx:264 AliAnalysisTaskSpectraBoth.cxx:265 AliAnalysisTaskSpectraBoth.cxx:266 AliAnalysisTaskSpectraBoth.cxx:267 AliAnalysisTaskSpectraBoth.cxx:268 AliAnalysisTaskSpectraBoth.cxx:269 AliAnalysisTaskSpectraBoth.cxx:270 AliAnalysisTaskSpectraBoth.cxx:271 AliAnalysisTaskSpectraBoth.cxx:272 AliAnalysisTaskSpectraBoth.cxx:273 AliAnalysisTaskSpectraBoth.cxx:274 AliAnalysisTaskSpectraBoth.cxx:275 AliAnalysisTaskSpectraBoth.cxx:276 AliAnalysisTaskSpectraBoth.cxx:277 AliAnalysisTaskSpectraBoth.cxx:278 AliAnalysisTaskSpectraBoth.cxx:279 AliAnalysisTaskSpectraBoth.cxx:280 AliAnalysisTaskSpectraBoth.cxx:281 AliAnalysisTaskSpectraBoth.cxx:282 AliAnalysisTaskSpectraBoth.cxx:283 AliAnalysisTaskSpectraBoth.cxx:284 AliAnalysisTaskSpectraBoth.cxx:285 AliAnalysisTaskSpectraBoth.cxx:286 AliAnalysisTaskSpectraBoth.cxx:287 AliAnalysisTaskSpectraBoth.cxx:288 AliAnalysisTaskSpectraBoth.cxx:289 AliAnalysisTaskSpectraBoth.cxx:290 AliAnalysisTaskSpectraBoth.cxx:291 AliAnalysisTaskSpectraBoth.cxx:292 AliAnalysisTaskSpectraBoth.cxx:293 AliAnalysisTaskSpectraBoth.cxx:294 AliAnalysisTaskSpectraBoth.cxx:295 AliAnalysisTaskSpectraBoth.cxx:296 AliAnalysisTaskSpectraBoth.cxx:297 AliAnalysisTaskSpectraBoth.cxx:298 AliAnalysisTaskSpectraBoth.cxx:299 AliAnalysisTaskSpectraBoth.cxx:300 AliAnalysisTaskSpectraBoth.cxx:301 AliAnalysisTaskSpectraBoth.cxx:302 AliAnalysisTaskSpectraBoth.cxx:303 AliAnalysisTaskSpectraBoth.cxx:304 AliAnalysisTaskSpectraBoth.cxx:305 AliAnalysisTaskSpectraBoth.cxx:306 AliAnalysisTaskSpectraBoth.cxx:307 AliAnalysisTaskSpectraBoth.cxx:308 AliAnalysisTaskSpectraBoth.cxx:309 AliAnalysisTaskSpectraBoth.cxx:310 AliAnalysisTaskSpectraBoth.cxx:311 AliAnalysisTaskSpectraBoth.cxx:312 AliAnalysisTaskSpectraBoth.cxx:313 AliAnalysisTaskSpectraBoth.cxx:314 AliAnalysisTaskSpectraBoth.cxx:315 AliAnalysisTaskSpectraBoth.cxx:316 AliAnalysisTaskSpectraBoth.cxx:317 AliAnalysisTaskSpectraBoth.cxx:318 AliAnalysisTaskSpectraBoth.cxx:319 AliAnalysisTaskSpectraBoth.cxx:320 AliAnalysisTaskSpectraBoth.cxx:321 AliAnalysisTaskSpectraBoth.cxx:322 AliAnalysisTaskSpectraBoth.cxx:323 AliAnalysisTaskSpectraBoth.cxx:324 AliAnalysisTaskSpectraBoth.cxx:325 AliAnalysisTaskSpectraBoth.cxx:326 AliAnalysisTaskSpectraBoth.cxx:327 AliAnalysisTaskSpectraBoth.cxx:328 AliAnalysisTaskSpectraBoth.cxx:329 AliAnalysisTaskSpectraBoth.cxx:330 AliAnalysisTaskSpectraBoth.cxx:331 AliAnalysisTaskSpectraBoth.cxx:332 AliAnalysisTaskSpectraBoth.cxx:333 AliAnalysisTaskSpectraBoth.cxx:334 AliAnalysisTaskSpectraBoth.cxx:335 AliAnalysisTaskSpectraBoth.cxx:336 AliAnalysisTaskSpectraBoth.cxx:337 AliAnalysisTaskSpectraBoth.cxx:338 AliAnalysisTaskSpectraBoth.cxx:339 AliAnalysisTaskSpectraBoth.cxx:340 AliAnalysisTaskSpectraBoth.cxx:341 AliAnalysisTaskSpectraBoth.cxx:342 AliAnalysisTaskSpectraBoth.cxx:343 AliAnalysisTaskSpectraBoth.cxx:344 AliAnalysisTaskSpectraBoth.cxx:345 AliAnalysisTaskSpectraBoth.cxx:346 AliAnalysisTaskSpectraBoth.cxx:347 AliAnalysisTaskSpectraBoth.cxx:348 AliAnalysisTaskSpectraBoth.cxx:349 AliAnalysisTaskSpectraBoth.cxx:350 AliAnalysisTaskSpectraBoth.cxx:351 AliAnalysisTaskSpectraBoth.cxx:352 AliAnalysisTaskSpectraBoth.cxx:353 AliAnalysisTaskSpectraBoth.cxx:354 AliAnalysisTaskSpectraBoth.cxx:355 AliAnalysisTaskSpectraBoth.cxx:356 AliAnalysisTaskSpectraBoth.cxx:357 AliAnalysisTaskSpectraBoth.cxx:358 AliAnalysisTaskSpectraBoth.cxx:359 AliAnalysisTaskSpectraBoth.cxx:360 AliAnalysisTaskSpectraBoth.cxx:361 AliAnalysisTaskSpectraBoth.cxx:362 AliAnalysisTaskSpectraBoth.cxx:363 AliAnalysisTaskSpectraBoth.cxx:364 AliAnalysisTaskSpectraBoth.cxx:365 AliAnalysisTaskSpectraBoth.cxx:366 AliAnalysisTaskSpectraBoth.cxx:367 AliAnalysisTaskSpectraBoth.cxx:368 AliAnalysisTaskSpectraBoth.cxx:369 AliAnalysisTaskSpectraBoth.cxx:370 AliAnalysisTaskSpectraBoth.cxx:371 AliAnalysisTaskSpectraBoth.cxx:372 AliAnalysisTaskSpectraBoth.cxx:373 AliAnalysisTaskSpectraBoth.cxx:374 AliAnalysisTaskSpectraBoth.cxx:375 AliAnalysisTaskSpectraBoth.cxx:376 AliAnalysisTaskSpectraBoth.cxx:377 AliAnalysisTaskSpectraBoth.cxx:378 AliAnalysisTaskSpectraBoth.cxx:379 AliAnalysisTaskSpectraBoth.cxx:380 AliAnalysisTaskSpectraBoth.cxx:381 AliAnalysisTaskSpectraBoth.cxx:382 AliAnalysisTaskSpectraBoth.cxx:383 AliAnalysisTaskSpectraBoth.cxx:384 AliAnalysisTaskSpectraBoth.cxx:385 AliAnalysisTaskSpectraBoth.cxx:386 AliAnalysisTaskSpectraBoth.cxx:387 AliAnalysisTaskSpectraBoth.cxx:388 AliAnalysisTaskSpectraBoth.cxx:389 AliAnalysisTaskSpectraBoth.cxx:390 AliAnalysisTaskSpectraBoth.cxx:391 AliAnalysisTaskSpectraBoth.cxx:392 AliAnalysisTaskSpectraBoth.cxx:393 AliAnalysisTaskSpectraBoth.cxx:394 AliAnalysisTaskSpectraBoth.cxx:395 AliAnalysisTaskSpectraBoth.cxx:396 AliAnalysisTaskSpectraBoth.cxx:397 AliAnalysisTaskSpectraBoth.cxx:398 AliAnalysisTaskSpectraBoth.cxx:399 AliAnalysisTaskSpectraBoth.cxx:400 AliAnalysisTaskSpectraBoth.cxx:401 AliAnalysisTaskSpectraBoth.cxx:402 AliAnalysisTaskSpectraBoth.cxx:403 AliAnalysisTaskSpectraBoth.cxx:404 AliAnalysisTaskSpectraBoth.cxx:405 AliAnalysisTaskSpectraBoth.cxx:406 AliAnalysisTaskSpectraBoth.cxx:407 AliAnalysisTaskSpectraBoth.cxx:408 AliAnalysisTaskSpectraBoth.cxx:409 AliAnalysisTaskSpectraBoth.cxx:410 AliAnalysisTaskSpectraBoth.cxx:411 AliAnalysisTaskSpectraBoth.cxx:412 AliAnalysisTaskSpectraBoth.cxx:413 AliAnalysisTaskSpectraBoth.cxx:414 AliAnalysisTaskSpectraBoth.cxx:415 AliAnalysisTaskSpectraBoth.cxx:416 AliAnalysisTaskSpectraBoth.cxx:417 AliAnalysisTaskSpectraBoth.cxx:418 AliAnalysisTaskSpectraBoth.cxx:419 AliAnalysisTaskSpectraBoth.cxx:420 AliAnalysisTaskSpectraBoth.cxx:421 AliAnalysisTaskSpectraBoth.cxx:422 AliAnalysisTaskSpectraBoth.cxx:423 AliAnalysisTaskSpectraBoth.cxx:424 AliAnalysisTaskSpectraBoth.cxx:425 AliAnalysisTaskSpectraBoth.cxx:426 AliAnalysisTaskSpectraBoth.cxx:427 AliAnalysisTaskSpectraBoth.cxx:428 AliAnalysisTaskSpectraBoth.cxx:429 AliAnalysisTaskSpectraBoth.cxx:430 AliAnalysisTaskSpectraBoth.cxx:431 AliAnalysisTaskSpectraBoth.cxx:432 AliAnalysisTaskSpectraBoth.cxx:433 AliAnalysisTaskSpectraBoth.cxx:434 AliAnalysisTaskSpectraBoth.cxx:435 AliAnalysisTaskSpectraBoth.cxx:436 AliAnalysisTaskSpectraBoth.cxx:437 AliAnalysisTaskSpectraBoth.cxx:438 AliAnalysisTaskSpectraBoth.cxx:439 AliAnalysisTaskSpectraBoth.cxx:440 AliAnalysisTaskSpectraBoth.cxx:441 AliAnalysisTaskSpectraBoth.cxx:442 AliAnalysisTaskSpectraBoth.cxx:443 AliAnalysisTaskSpectraBoth.cxx:444 AliAnalysisTaskSpectraBoth.cxx:445 AliAnalysisTaskSpectraBoth.cxx:446 AliAnalysisTaskSpectraBoth.cxx:447 AliAnalysisTaskSpectraBoth.cxx:448 AliAnalysisTaskSpectraBoth.cxx:449 AliAnalysisTaskSpectraBoth.cxx:450 AliAnalysisTaskSpectraBoth.cxx:451 AliAnalysisTaskSpectraBoth.cxx:452 AliAnalysisTaskSpectraBoth.cxx:453 AliAnalysisTaskSpectraBoth.cxx:454 AliAnalysisTaskSpectraBoth.cxx:455 AliAnalysisTaskSpectraBoth.cxx:456 AliAnalysisTaskSpectraBoth.cxx:457 AliAnalysisTaskSpectraBoth.cxx:458 AliAnalysisTaskSpectraBoth.cxx:459 AliAnalysisTaskSpectraBoth.cxx:460 AliAnalysisTaskSpectraBoth.cxx:461 AliAnalysisTaskSpectraBoth.cxx:462 AliAnalysisTaskSpectraBoth.cxx:463 AliAnalysisTaskSpectraBoth.cxx:464 AliAnalysisTaskSpectraBoth.cxx:465 AliAnalysisTaskSpectraBoth.cxx:466 AliAnalysisTaskSpectraBoth.cxx:467 AliAnalysisTaskSpectraBoth.cxx:468 AliAnalysisTaskSpectraBoth.cxx:469 AliAnalysisTaskSpectraBoth.cxx:470 AliAnalysisTaskSpectraBoth.cxx:471 AliAnalysisTaskSpectraBoth.cxx:472 AliAnalysisTaskSpectraBoth.cxx:473 AliAnalysisTaskSpectraBoth.cxx:474 AliAnalysisTaskSpectraBoth.cxx:475 AliAnalysisTaskSpectraBoth.cxx:476 AliAnalysisTaskSpectraBoth.cxx:477 AliAnalysisTaskSpectraBoth.cxx:478 AliAnalysisTaskSpectraBoth.cxx:479 AliAnalysisTaskSpectraBoth.cxx:480 AliAnalysisTaskSpectraBoth.cxx:481 AliAnalysisTaskSpectraBoth.cxx:482 AliAnalysisTaskSpectraBoth.cxx:483 AliAnalysisTaskSpectraBoth.cxx:484 AliAnalysisTaskSpectraBoth.cxx:485 AliAnalysisTaskSpectraBoth.cxx:486 AliAnalysisTaskSpectraBoth.cxx:487