#include <TChain.h>
#include <TH1D.h>
#include <TList.h>
#include <THashList.h>
#include <TString.h>
#include <AliPID.h>
#include <AliCFContainer.h>
#include <AliInputEventHandler.h>
#include <AliESDInputHandler.h>
#include <AliAODInputHandler.h>
#include <AliAnalysisManager.h>
#include <AliVEvent.h>
#include <AliESDEvent.h>
#include <AliESDv0.h>
#include <AliESDv0Cuts.h>
#include <AliESDv0KineCuts.h>
#include <AliKFVertex.h>
#include <AliESDfriendTrack.h>
#include <AliESDfriend.h>
#include <AliTRDseedV1.h>
#include <AliTRDcluster.h>
#include <AliTRDtrackV1.h>
#include "AliDielectron.h"
#include "AliDielectronHistos.h"
#include "AliDielectronPair.h"
#include "AliDielectronCF.h"
#include "AliDielectronMC.h"
#include "AliDielectronHistos.h"
#include "AliAnalysisTaskSingleParticle.h"
#include <iostream>
using namespace std;
ClassImp(AliAnalysisTaskSingleParticle)
AliAnalysisTaskSingleParticle::AliAnalysisTaskSingleParticle() :
AliAnalysisTaskSE(),
fCfContainer(0x0),
fHistos(0x0),
fHistogramList(),
fSelectPhysics(kTRUE),
fTriggerMask(AliVEvent::kMB),
fRejectPileup(kFALSE),
fFillTRDfriendPH(kFALSE),
fEventFilter(0x0),
fTrackFilter(0x0),
fPairFilter(0x0),
fV0Cuts(0x0),
fLambdaFilter(0x0),
fK0sFilter(0x0),
fV0KineCuts(0x0),
fCFNVars(0),
fEventStat(0x0)
{
for(Int_t i=0; i<kNMaxDimensions; ++i) {
fCFVarsEnabled[i] = -1; fCFVarsNbins[i] = 0;
fCFVarRanges[i][0] = 0.0; fCFVarRanges[i][1] = -1.0;
fCFVarBins[i] = "";
}
}
AliAnalysisTaskSingleParticle::AliAnalysisTaskSingleParticle(const char *name) :
AliAnalysisTaskSE(name),
fCfContainer(0x0),
fHistos(0x0),
fHistogramList(),
fSelectPhysics(kTRUE),
fTriggerMask(AliVEvent::kMB),
fRejectPileup(kFALSE),
fFillTRDfriendPH(kFALSE),
fEventFilter(0x0),
fTrackFilter(0x0),
fPairFilter(0x0),
fV0Cuts(0x0),
fLambdaFilter(0x0),
fK0sFilter(0x0),
fV0KineCuts(0x0),
fCFNVars(0),
fEventStat(0x0)
{
for(Int_t i=0; i<kNMaxDimensions; ++i) {
fCFVarsEnabled[i] = -1; fCFVarsNbins[i] = 0;
fCFVarRanges[i][0] = 0.0; fCFVarRanges[i][1] = -1.0;
fCFVarBins[i] = "";
}
fHistogramList.SetName("QAhistos");
fHistogramList.SetOwner();
DefineInput(0, TChain::Class());
DefineOutput(1, AliCFContainer::Class());
DefineOutput(2, TList::Class());
DefineOutput(3, TH1D::Class());
}
AliAnalysisTaskSingleParticle::~AliAnalysisTaskSingleParticle()
{
fHistogramList.SetOwner(kFALSE);
if(fHistos) delete fHistos;
delete fCfContainer;
}
void AliAnalysisTaskSingleParticle::AddCFVar(Int_t var, Int_t nbins, Double_t lowLim, Double_t highLim) {
if(fCFNVars>=kNMaxDimensions) return;
fCFVarsEnabled[fCFNVars] = var;
fCFVarsNbins[fCFNVars] = nbins;
fCFVarRanges[fCFNVars][0] = lowLim;
fCFVarRanges[fCFNVars][1] = highLim;
++fCFNVars;
}
void AliAnalysisTaskSingleParticle::AddCFVar(Int_t var, const Char_t* bins) {
if(fCFNVars>=kNMaxDimensions) return;
fCFVarsEnabled[fCFNVars] = var;
fCFVarBins[fCFNVars] = bins;
++fCFNVars;
}
void AliAnalysisTaskSingleParticle::UserCreateOutputObjects()
{
if(fCfContainer) return;
if(!fHistogramList.IsEmpty()) return;
if (!fEventStat){
fEventStat=new TH1D("hEventStat","Event statistics",4,-0.5,3.5);
fEventStat->GetXaxis()->SetBinLabel(1,"Before Phys. Sel.");
fEventStat->GetXaxis()->SetBinLabel(2,"After Phys. Sel.");
fEventStat->GetXaxis()->SetBinLabel(3,"After event filter");
fEventStat->GetXaxis()->SetBinLabel(4,"After pileup rejection");
}
if(!fCfContainer) {
for(Int_t ivar=0; ivar<fCFNVars; ++ivar) {
if(fCFVarBins[ivar][0]!='\0') {
TObjArray* arr = fCFVarBins[ivar].Tokenize(",");
fCFVarsNbins[ivar] = arr->GetEntries()-1;
}
}
fCFVarsNbins[fCFNVars] = AliPID::kSPECIES;
Double_t phLimits[2] = {0.0, 2000.}; Int_t phBins = 200;
Double_t detLimits[2] = {-0.5, 539.5}; Int_t detBins = 540;
const Int_t kNTrdMomBins = 17;
Double_t trdMomLimits[kNTrdMomBins+1] = {0.0, 0.5, 0.7, 0.9, 1.1, 1.3, 1.5, 1.7, 1.9, 2.1, 2.5, 3.0, 3.5, 4.0, 5.0, 6.0, 8.0, 10.0};
Int_t trdNtb = 30; Double_t trdTbLims[2] = {0.5, 30.5};
Int_t trdQtotNbins = 200; Double_t trdQtotLims[2] = {0.0, 10000.};
fCFVarsNbins[fCFNVars+1] = kNTrdMomBins;
fCFVarsNbins[fCFNVars+2] = detBins;
fCFVarsNbins[fCFNVars+3] = trdNtb;
fCFVarsNbins[fCFNVars+4] = phBins;
fCFVarsNbins[fCFNVars+5] = trdQtotNbins;
if(fCFNVars>0 || fFillTRDfriendPH) {
fCfContainer = new AliCFContainer("SingleParticle", "Single Particle CF", 1, (fFillTRDfriendPH ? fCFNVars+6 : fCFNVars+1), fCFVarsNbins);
for(Int_t ivar=0; ivar<fCFNVars; ++ivar) {
if(fCFVarBins[ivar][0]=='\0')
fCfContainer->SetBinLimits(ivar, fCFVarRanges[ivar][0], fCFVarRanges[ivar][1]);
else {
TObjArray* arr = fCFVarBins[ivar].Tokenize(",");
if(arr->GetEntries()-1>0) {
Double_t* binLims = new Double_t[arr->GetEntries()];
for(Int_t ib=0;ib<arr->GetEntries();++ib) {
TString binStr = arr->At(ib)->GetName();
binLims[ib] = binStr.Atof();
}
fCfContainer->SetBinLimits(ivar, binLims);
}
}
fCfContainer->SetVarTitle(ivar, AliDielectronVarManager::GetValueName(fCFVarsEnabled[ivar]));
}
fCfContainer->SetBinLimits(fCFNVars, -0.5+AliPID::kElectron, 0.5+AliPID::kProton);
fCfContainer->SetVarTitle(fCFNVars, "specie");
if(fFillTRDfriendPH) {
fCfContainer->SetBinLimits(fCFNVars+1, trdMomLimits);
fCfContainer->SetVarTitle(fCFNVars+1, "TRD_trackletMom");
fCfContainer->SetBinLimits(fCFNVars+2, detLimits[0], detLimits[1]);
fCfContainer->SetVarTitle(fCFNVars+2, "TRD_detector");
fCfContainer->SetBinLimits(fCFNVars+3, trdTbLims[0], trdTbLims[1]);
fCfContainer->SetVarTitle(fCFNVars+3, "TRD_tb");
fCfContainer->SetBinLimits(fCFNVars+4, phLimits[0], phLimits[1]);
fCfContainer->SetVarTitle(fCFNVars+4, "TRD_PH");
fCfContainer->SetBinLimits(fCFNVars+5, trdQtotLims[0], trdQtotLims[1]);
fCfContainer->SetVarTitle(fCFNVars+5, "TRD_Qtot");
}
fCfContainer->SetStepTitle(0, "Tracking");
}
}
if(fHistos) {
fHistogramList.Add(const_cast<THashList*>(fHistos->GetHistogramList()));
}
if(fCfContainer) PostData(1, fCfContainer);
if(fHistos) PostData(2, &fHistogramList);
PostData(3, fEventStat);
}
void AliAnalysisTaskSingleParticle::UserExec(Option_t *)
{
AliAnalysisManager *man=AliAnalysisManager::GetAnalysisManager();
AliInputEventHandler* inputHandler = (AliInputEventHandler*) (man->GetInputEventHandler());
if (!inputHandler) return;
if ( inputHandler->GetPIDResponse() ){
AliDielectronVarManager::SetPIDResponse( inputHandler->GetPIDResponse() );
} else {
AliFatal("This task needs the PID response attached to the input event handler!");
}
UInt_t isSelected = AliVEvent::kAny;
if( fSelectPhysics && inputHandler && inputHandler->GetEventSelection() ) {
isSelected = inputHandler->IsEventSelected();
isSelected&=fTriggerMask;
}
fEventStat->Fill(0);
if (isSelected==0) {
PostData(3,fEventStat);
return;
}
fEventStat->Fill(1);
if (fEventFilter) {
if (!fEventFilter->IsSelected(InputEvent())) {PostData(3, fEventStat); return;}
}
fEventStat->Fill(2);
if (fRejectPileup){
if (InputEvent()->IsPileupFromSPD(3,0.8,3.,2.,5.)) {PostData(3, fEventStat); return;}
}
fEventStat->Fill(3);
if(!fCfContainer) {PostData(3, fEventStat); return;}
Double_t bz = InputEvent()->GetMagneticField();
AliKFParticle::SetField( bz );
AliDielectronPID::SetCorrVal((Double_t)InputEvent()->GetRunNumber());
AliESDEvent* esd = (AliESDEvent*)InputEvent();
AliDielectronVarManager::SetEvent(esd);
Double_t valuesPos[AliDielectronVarManager::kNMaxValues];
Double_t valuesNeg[AliDielectronVarManager::kNMaxValues];
Double_t valuesPair[AliDielectronVarManager::kNMaxValues];
AliDielectronVarManager::Fill(esd, valuesPos);
AliDielectronVarManager::Fill(esd, valuesNeg);
AliDielectronVarManager::Fill(esd, valuesPair);
if(fHistos && fHistos->GetHistogramList()->FindObject("Event"))
fHistos->FillClass("Event", AliDielectronVarManager::kNMaxValues, valuesPos);
const AliESDVertex *primaryVertex = esd->GetPrimaryVertex();
AliKFVertex primaryVertexKF(*primaryVertex);
fV0KineCuts->SetEvent(esd);
fV0KineCuts->SetPrimaryVertex(&primaryVertexKF);
Int_t pdgV0=0; Int_t pdgP=0; Int_t pdgN=0;
for(Int_t iV0=0; iV0<InputEvent()->GetNumberOfV0s(); ++iV0) {
AliESDv0 *v0 = esd->GetV0(iV0);
AliESDtrack* legPos = esd->GetTrack(v0->GetPindex());
AliESDtrack* legNeg = esd->GetTrack(v0->GetNindex());
if(legPos->GetSign() == legNeg->GetSign()) {
continue;
}
if(!(legPos->GetStatus() & AliESDtrack::kTPCrefit)) {
continue;
}
if(!(legNeg->GetStatus() & AliESDtrack::kTPCrefit)) {
continue;
}
Bool_t v0ChargesAreCorrect = (legPos->GetSign()==+1 ? kTRUE : kFALSE);
legPos = (!v0ChargesAreCorrect ? esd->GetTrack(v0->GetNindex()) : legPos);
legNeg = (!v0ChargesAreCorrect ? esd->GetTrack(v0->GetPindex()) : legNeg);
Bool_t good = fV0KineCuts->ProcessV0(v0, pdgV0, pdgP, pdgN);
if(!good) {
continue;
}
if(!fFillTRDfriendPH) {
if(pdgV0!=22) continue;
if(TMath::Abs(pdgN)!=11) continue;
if(TMath::Abs(pdgP)!=11) continue;
}
if(fTrackFilter && !fTrackFilter->IsSelected(legPos)) {
continue;
}
if(fTrackFilter && !fTrackFilter->IsSelected(legNeg)) {
continue;
}
AliKFParticle* posKF = (v0ChargesAreCorrect ? new AliKFParticle(*(v0->GetParamP()),pdgP) : new AliKFParticle(*(v0->GetParamN()),pdgN));
AliKFParticle* negKF = (v0ChargesAreCorrect ? new AliKFParticle(*(v0->GetParamN()),pdgN) : new AliKFParticle(*(v0->GetParamP()),pdgP));
AliDielectronPair pair;
pair.SetTracks(posKF, negKF, legPos, legNeg);
pair.SetType(1);
if(fPairFilter && !fPairFilter->IsSelected(&pair)) {
continue;
}
AliDielectronVarManager::Fill(legPos, valuesPos);
AliDielectronVarManager::Fill(legNeg, valuesNeg);
if(fHistos && fHistos->GetHistogramList()->FindObject("Track_Pos"))
fHistos->FillClass("Track_Pos", AliDielectronVarManager::kNMaxValues, valuesPos);
if(fHistos && fHistos->GetHistogramList()->FindObject("Track_Neg"))
fHistos->FillClass("Track_Neg", AliDielectronVarManager::kNMaxValues, valuesNeg);
AliDielectronVarManager::Fill(&pair, valuesPair);
if(fHistos && fHistos->GetHistogramList()->FindObject(Form("Pair_%s",AliDielectron::PairClassName(1))))
fHistos->FillClass(Form("Pair_%s",AliDielectron::PairClassName(1)), AliDielectronVarManager::kNMaxValues, valuesPair);
if(valuesPos[AliDielectronVarManager::kPOut]>=0.5)
FillContainer(0, valuesPos, (v0ChargesAreCorrect ? v0->GetPindex() : v0->GetNindex()), (v0ChargesAreCorrect ? pdgP : pdgN));
if(valuesNeg[AliDielectronVarManager::kPOut]>=0.5)
FillContainer(0, valuesNeg, (v0ChargesAreCorrect ? v0->GetNindex() : v0->GetPindex()), (v0ChargesAreCorrect ? pdgN : pdgP));
}
PostData(1, fCfContainer);
PostData(2, &fHistogramList);
PostData(3, fEventStat);
}
void AliAnalysisTaskSingleParticle::FinishTaskOutput()
{
}
void AliAnalysisTaskSingleParticle::FillContainer(Int_t step, const Double_t* values, Int_t trackId, Int_t pdg) {
Double_t valuesCF[kNMaxDimensions];
for(Int_t i=0; i<fCFNVars; ++i) valuesCF[i] = values[fCFVarsEnabled[i]];
Double_t pid = -1.0;
if(TMath::Abs(pdg)==11) pid = AliPID::kElectron;
if(TMath::Abs(pdg)==13) pid = AliPID::kMuon;
if(TMath::Abs(pdg)==211) pid = AliPID::kPion;
if(TMath::Abs(pdg)==321) pid = AliPID::kKaon;
if(TMath::Abs(pdg)==2212) pid = AliPID::kProton;
valuesCF[fCFNVars] = pid;
if(fFillTRDfriendPH) {
AliESDfriendTrack* friendTrk = fESDfriend->GetTrack(trackId);
if(!friendTrk) return;
if(values[AliDielectronVarManager::kTRDntracklets]>0.001) {
TObject* o=0x0; Int_t ical = 0;
AliTRDtrackV1* trdTrack=0x0;
while(1) {
o = friendTrk->GetCalibObject(ical++);
if(!o) break;
TString objName = o->IsA()->GetName();
if(!objName.Contains("AliTRDtrackV1")) continue;
trdTrack = dynamic_cast<AliTRDtrackV1*>(o);
break;
}
if(!trdTrack) return;
Double_t charge = 0.0;
for(Int_t ipl = 0; ipl < 6; ipl++) {
AliTRDseedV1 *tracklet = trdTrack->GetTracklet(ipl);
if(!tracklet) continue;
if(!tracklet->IsOK()) continue;
valuesCF[fCFNVars+1] = tracklet->GetMomentum();
valuesCF[fCFNVars+2] = tracklet->GetDetector();
charge = 0.0;
for(Int_t itb = 0; itb < AliTRDseedV1::kNtb; itb++){
AliTRDcluster *c = tracklet->GetClusters(itb);
AliTRDcluster *c1 = tracklet->GetClusters(itb + AliTRDseedV1::kNtb);
if(c) charge += TMath::Abs(c->GetQ());
if(c1) charge += TMath::Abs(c1->GetQ());
}
valuesCF[fCFNVars+5] = charge;
for(Int_t itb = 0; itb < AliTRDseedV1::kNtb; itb++){
AliTRDcluster *c = tracklet->GetClusters(itb);
AliTRDcluster *c1 = tracklet->GetClusters(itb + AliTRDseedV1::kNtb);
if(!(c || c1)) continue;
AliTRDcluster *cptr = (c ? c : c1);
Int_t tcal = cptr->GetLocalTimeBin();
Float_t sig = 0;
if(c) sig += TMath::Abs(c->GetQ());
if(c1) sig += TMath::Abs(c1->GetQ());
valuesCF[fCFNVars+3] = tcal;
valuesCF[fCFNVars+4] = sig;
fCfContainer->Fill(valuesCF, step);
}
}
}
}
if(!fFillTRDfriendPH)
fCfContainer->Fill(valuesCF, step);
}
AliAnalysisTaskSingleParticle.cxx:1 AliAnalysisTaskSingleParticle.cxx:2 AliAnalysisTaskSingleParticle.cxx:3 AliAnalysisTaskSingleParticle.cxx:4 AliAnalysisTaskSingleParticle.cxx:5 AliAnalysisTaskSingleParticle.cxx:6 AliAnalysisTaskSingleParticle.cxx:7 AliAnalysisTaskSingleParticle.cxx:8 AliAnalysisTaskSingleParticle.cxx:9 AliAnalysisTaskSingleParticle.cxx:10 AliAnalysisTaskSingleParticle.cxx:11 AliAnalysisTaskSingleParticle.cxx:12 AliAnalysisTaskSingleParticle.cxx:13 AliAnalysisTaskSingleParticle.cxx:14 AliAnalysisTaskSingleParticle.cxx:15 AliAnalysisTaskSingleParticle.cxx:16 AliAnalysisTaskSingleParticle.cxx:17 AliAnalysisTaskSingleParticle.cxx:18 AliAnalysisTaskSingleParticle.cxx:19 AliAnalysisTaskSingleParticle.cxx:20 AliAnalysisTaskSingleParticle.cxx:21 AliAnalysisTaskSingleParticle.cxx:22 AliAnalysisTaskSingleParticle.cxx:23 AliAnalysisTaskSingleParticle.cxx:24 AliAnalysisTaskSingleParticle.cxx:25 AliAnalysisTaskSingleParticle.cxx:26 AliAnalysisTaskSingleParticle.cxx:27 AliAnalysisTaskSingleParticle.cxx:28 AliAnalysisTaskSingleParticle.cxx:29 AliAnalysisTaskSingleParticle.cxx:30 AliAnalysisTaskSingleParticle.cxx:31 AliAnalysisTaskSingleParticle.cxx:32 AliAnalysisTaskSingleParticle.cxx:33 AliAnalysisTaskSingleParticle.cxx:34 AliAnalysisTaskSingleParticle.cxx:35 AliAnalysisTaskSingleParticle.cxx:36 AliAnalysisTaskSingleParticle.cxx:37 AliAnalysisTaskSingleParticle.cxx:38 AliAnalysisTaskSingleParticle.cxx:39 AliAnalysisTaskSingleParticle.cxx:40 AliAnalysisTaskSingleParticle.cxx:41 AliAnalysisTaskSingleParticle.cxx:42 AliAnalysisTaskSingleParticle.cxx:43 AliAnalysisTaskSingleParticle.cxx:44 AliAnalysisTaskSingleParticle.cxx:45 AliAnalysisTaskSingleParticle.cxx:46 AliAnalysisTaskSingleParticle.cxx:47 AliAnalysisTaskSingleParticle.cxx:48 AliAnalysisTaskSingleParticle.cxx:49 AliAnalysisTaskSingleParticle.cxx:50 AliAnalysisTaskSingleParticle.cxx:51 AliAnalysisTaskSingleParticle.cxx:52 AliAnalysisTaskSingleParticle.cxx:53 AliAnalysisTaskSingleParticle.cxx:54 AliAnalysisTaskSingleParticle.cxx:55 AliAnalysisTaskSingleParticle.cxx:56 AliAnalysisTaskSingleParticle.cxx:57 AliAnalysisTaskSingleParticle.cxx:58 AliAnalysisTaskSingleParticle.cxx:59 AliAnalysisTaskSingleParticle.cxx:60 AliAnalysisTaskSingleParticle.cxx:61 AliAnalysisTaskSingleParticle.cxx:62 AliAnalysisTaskSingleParticle.cxx:63 AliAnalysisTaskSingleParticle.cxx:64 AliAnalysisTaskSingleParticle.cxx:65 AliAnalysisTaskSingleParticle.cxx:66 AliAnalysisTaskSingleParticle.cxx:67 AliAnalysisTaskSingleParticle.cxx:68 AliAnalysisTaskSingleParticle.cxx:69 AliAnalysisTaskSingleParticle.cxx:70 AliAnalysisTaskSingleParticle.cxx:71 AliAnalysisTaskSingleParticle.cxx:72 AliAnalysisTaskSingleParticle.cxx:73 AliAnalysisTaskSingleParticle.cxx:74 AliAnalysisTaskSingleParticle.cxx:75 AliAnalysisTaskSingleParticle.cxx:76 AliAnalysisTaskSingleParticle.cxx:77 AliAnalysisTaskSingleParticle.cxx:78 AliAnalysisTaskSingleParticle.cxx:79 AliAnalysisTaskSingleParticle.cxx:80 AliAnalysisTaskSingleParticle.cxx:81 AliAnalysisTaskSingleParticle.cxx:82 AliAnalysisTaskSingleParticle.cxx:83 AliAnalysisTaskSingleParticle.cxx:84 AliAnalysisTaskSingleParticle.cxx:85 AliAnalysisTaskSingleParticle.cxx:86 AliAnalysisTaskSingleParticle.cxx:87 AliAnalysisTaskSingleParticle.cxx:88 AliAnalysisTaskSingleParticle.cxx:89 AliAnalysisTaskSingleParticle.cxx:90 AliAnalysisTaskSingleParticle.cxx:91 AliAnalysisTaskSingleParticle.cxx:92 AliAnalysisTaskSingleParticle.cxx:93 AliAnalysisTaskSingleParticle.cxx:94 AliAnalysisTaskSingleParticle.cxx:95 AliAnalysisTaskSingleParticle.cxx:96 AliAnalysisTaskSingleParticle.cxx:97 AliAnalysisTaskSingleParticle.cxx:98 AliAnalysisTaskSingleParticle.cxx:99 AliAnalysisTaskSingleParticle.cxx:100 AliAnalysisTaskSingleParticle.cxx:101 AliAnalysisTaskSingleParticle.cxx:102 AliAnalysisTaskSingleParticle.cxx:103 AliAnalysisTaskSingleParticle.cxx:104 AliAnalysisTaskSingleParticle.cxx:105 AliAnalysisTaskSingleParticle.cxx:106 AliAnalysisTaskSingleParticle.cxx:107 AliAnalysisTaskSingleParticle.cxx:108 AliAnalysisTaskSingleParticle.cxx:109 AliAnalysisTaskSingleParticle.cxx:110 AliAnalysisTaskSingleParticle.cxx:111 AliAnalysisTaskSingleParticle.cxx:112 AliAnalysisTaskSingleParticle.cxx:113 AliAnalysisTaskSingleParticle.cxx:114 AliAnalysisTaskSingleParticle.cxx:115 AliAnalysisTaskSingleParticle.cxx:116 AliAnalysisTaskSingleParticle.cxx:117 AliAnalysisTaskSingleParticle.cxx:118 AliAnalysisTaskSingleParticle.cxx:119 AliAnalysisTaskSingleParticle.cxx:120 AliAnalysisTaskSingleParticle.cxx:121 AliAnalysisTaskSingleParticle.cxx:122 AliAnalysisTaskSingleParticle.cxx:123 AliAnalysisTaskSingleParticle.cxx:124 AliAnalysisTaskSingleParticle.cxx:125 AliAnalysisTaskSingleParticle.cxx:126 AliAnalysisTaskSingleParticle.cxx:127 AliAnalysisTaskSingleParticle.cxx:128 AliAnalysisTaskSingleParticle.cxx:129 AliAnalysisTaskSingleParticle.cxx:130 AliAnalysisTaskSingleParticle.cxx:131 AliAnalysisTaskSingleParticle.cxx:132 AliAnalysisTaskSingleParticle.cxx:133 AliAnalysisTaskSingleParticle.cxx:134 AliAnalysisTaskSingleParticle.cxx:135 AliAnalysisTaskSingleParticle.cxx:136 AliAnalysisTaskSingleParticle.cxx:137 AliAnalysisTaskSingleParticle.cxx:138 AliAnalysisTaskSingleParticle.cxx:139 AliAnalysisTaskSingleParticle.cxx:140 AliAnalysisTaskSingleParticle.cxx:141 AliAnalysisTaskSingleParticle.cxx:142 AliAnalysisTaskSingleParticle.cxx:143 AliAnalysisTaskSingleParticle.cxx:144 AliAnalysisTaskSingleParticle.cxx:145 AliAnalysisTaskSingleParticle.cxx:146 AliAnalysisTaskSingleParticle.cxx:147 AliAnalysisTaskSingleParticle.cxx:148 AliAnalysisTaskSingleParticle.cxx:149 AliAnalysisTaskSingleParticle.cxx:150 AliAnalysisTaskSingleParticle.cxx:151 AliAnalysisTaskSingleParticle.cxx:152 AliAnalysisTaskSingleParticle.cxx:153 AliAnalysisTaskSingleParticle.cxx:154 AliAnalysisTaskSingleParticle.cxx:155 AliAnalysisTaskSingleParticle.cxx:156 AliAnalysisTaskSingleParticle.cxx:157 AliAnalysisTaskSingleParticle.cxx:158 AliAnalysisTaskSingleParticle.cxx:159 AliAnalysisTaskSingleParticle.cxx:160 AliAnalysisTaskSingleParticle.cxx:161 AliAnalysisTaskSingleParticle.cxx:162 AliAnalysisTaskSingleParticle.cxx:163 AliAnalysisTaskSingleParticle.cxx:164 AliAnalysisTaskSingleParticle.cxx:165 AliAnalysisTaskSingleParticle.cxx:166 AliAnalysisTaskSingleParticle.cxx:167 AliAnalysisTaskSingleParticle.cxx:168 AliAnalysisTaskSingleParticle.cxx:169 AliAnalysisTaskSingleParticle.cxx:170 AliAnalysisTaskSingleParticle.cxx:171 AliAnalysisTaskSingleParticle.cxx:172 AliAnalysisTaskSingleParticle.cxx:173 AliAnalysisTaskSingleParticle.cxx:174 AliAnalysisTaskSingleParticle.cxx:175 AliAnalysisTaskSingleParticle.cxx:176 AliAnalysisTaskSingleParticle.cxx:177 AliAnalysisTaskSingleParticle.cxx:178 AliAnalysisTaskSingleParticle.cxx:179 AliAnalysisTaskSingleParticle.cxx:180 AliAnalysisTaskSingleParticle.cxx:181 AliAnalysisTaskSingleParticle.cxx:182 AliAnalysisTaskSingleParticle.cxx:183 AliAnalysisTaskSingleParticle.cxx:184 AliAnalysisTaskSingleParticle.cxx:185 AliAnalysisTaskSingleParticle.cxx:186 AliAnalysisTaskSingleParticle.cxx:187 AliAnalysisTaskSingleParticle.cxx:188 AliAnalysisTaskSingleParticle.cxx:189 AliAnalysisTaskSingleParticle.cxx:190 AliAnalysisTaskSingleParticle.cxx:191 AliAnalysisTaskSingleParticle.cxx:192 AliAnalysisTaskSingleParticle.cxx:193 AliAnalysisTaskSingleParticle.cxx:194 AliAnalysisTaskSingleParticle.cxx:195 AliAnalysisTaskSingleParticle.cxx:196 AliAnalysisTaskSingleParticle.cxx:197 AliAnalysisTaskSingleParticle.cxx:198 AliAnalysisTaskSingleParticle.cxx:199 AliAnalysisTaskSingleParticle.cxx:200 AliAnalysisTaskSingleParticle.cxx:201 AliAnalysisTaskSingleParticle.cxx:202 AliAnalysisTaskSingleParticle.cxx:203 AliAnalysisTaskSingleParticle.cxx:204 AliAnalysisTaskSingleParticle.cxx:205 AliAnalysisTaskSingleParticle.cxx:206 AliAnalysisTaskSingleParticle.cxx:207 AliAnalysisTaskSingleParticle.cxx:208 AliAnalysisTaskSingleParticle.cxx:209 AliAnalysisTaskSingleParticle.cxx:210 AliAnalysisTaskSingleParticle.cxx:211 AliAnalysisTaskSingleParticle.cxx:212 AliAnalysisTaskSingleParticle.cxx:213 AliAnalysisTaskSingleParticle.cxx:214 AliAnalysisTaskSingleParticle.cxx:215 AliAnalysisTaskSingleParticle.cxx:216 AliAnalysisTaskSingleParticle.cxx:217 AliAnalysisTaskSingleParticle.cxx:218 AliAnalysisTaskSingleParticle.cxx:219 AliAnalysisTaskSingleParticle.cxx:220 AliAnalysisTaskSingleParticle.cxx:221 AliAnalysisTaskSingleParticle.cxx:222 AliAnalysisTaskSingleParticle.cxx:223 AliAnalysisTaskSingleParticle.cxx:224 AliAnalysisTaskSingleParticle.cxx:225 AliAnalysisTaskSingleParticle.cxx:226 AliAnalysisTaskSingleParticle.cxx:227 AliAnalysisTaskSingleParticle.cxx:228 AliAnalysisTaskSingleParticle.cxx:229 AliAnalysisTaskSingleParticle.cxx:230 AliAnalysisTaskSingleParticle.cxx:231 AliAnalysisTaskSingleParticle.cxx:232 AliAnalysisTaskSingleParticle.cxx:233 AliAnalysisTaskSingleParticle.cxx:234 AliAnalysisTaskSingleParticle.cxx:235 AliAnalysisTaskSingleParticle.cxx:236 AliAnalysisTaskSingleParticle.cxx:237 AliAnalysisTaskSingleParticle.cxx:238 AliAnalysisTaskSingleParticle.cxx:239 AliAnalysisTaskSingleParticle.cxx:240 AliAnalysisTaskSingleParticle.cxx:241 AliAnalysisTaskSingleParticle.cxx:242 AliAnalysisTaskSingleParticle.cxx:243 AliAnalysisTaskSingleParticle.cxx:244 AliAnalysisTaskSingleParticle.cxx:245 AliAnalysisTaskSingleParticle.cxx:246 AliAnalysisTaskSingleParticle.cxx:247 AliAnalysisTaskSingleParticle.cxx:248 AliAnalysisTaskSingleParticle.cxx:249 AliAnalysisTaskSingleParticle.cxx:250 AliAnalysisTaskSingleParticle.cxx:251 AliAnalysisTaskSingleParticle.cxx:252 AliAnalysisTaskSingleParticle.cxx:253 AliAnalysisTaskSingleParticle.cxx:254 AliAnalysisTaskSingleParticle.cxx:255 AliAnalysisTaskSingleParticle.cxx:256 AliAnalysisTaskSingleParticle.cxx:257 AliAnalysisTaskSingleParticle.cxx:258 AliAnalysisTaskSingleParticle.cxx:259 AliAnalysisTaskSingleParticle.cxx:260 AliAnalysisTaskSingleParticle.cxx:261 AliAnalysisTaskSingleParticle.cxx:262 AliAnalysisTaskSingleParticle.cxx:263 AliAnalysisTaskSingleParticle.cxx:264 AliAnalysisTaskSingleParticle.cxx:265 AliAnalysisTaskSingleParticle.cxx:266 AliAnalysisTaskSingleParticle.cxx:267 AliAnalysisTaskSingleParticle.cxx:268 AliAnalysisTaskSingleParticle.cxx:269 AliAnalysisTaskSingleParticle.cxx:270 AliAnalysisTaskSingleParticle.cxx:271 AliAnalysisTaskSingleParticle.cxx:272 AliAnalysisTaskSingleParticle.cxx:273 AliAnalysisTaskSingleParticle.cxx:274 AliAnalysisTaskSingleParticle.cxx:275 AliAnalysisTaskSingleParticle.cxx:276 AliAnalysisTaskSingleParticle.cxx:277 AliAnalysisTaskSingleParticle.cxx:278 AliAnalysisTaskSingleParticle.cxx:279 AliAnalysisTaskSingleParticle.cxx:280 AliAnalysisTaskSingleParticle.cxx:281 AliAnalysisTaskSingleParticle.cxx:282 AliAnalysisTaskSingleParticle.cxx:283 AliAnalysisTaskSingleParticle.cxx:284 AliAnalysisTaskSingleParticle.cxx:285 AliAnalysisTaskSingleParticle.cxx:286 AliAnalysisTaskSingleParticle.cxx:287 AliAnalysisTaskSingleParticle.cxx:288 AliAnalysisTaskSingleParticle.cxx:289 AliAnalysisTaskSingleParticle.cxx:290 AliAnalysisTaskSingleParticle.cxx:291 AliAnalysisTaskSingleParticle.cxx:292 AliAnalysisTaskSingleParticle.cxx:293 AliAnalysisTaskSingleParticle.cxx:294 AliAnalysisTaskSingleParticle.cxx:295 AliAnalysisTaskSingleParticle.cxx:296 AliAnalysisTaskSingleParticle.cxx:297 AliAnalysisTaskSingleParticle.cxx:298 AliAnalysisTaskSingleParticle.cxx:299 AliAnalysisTaskSingleParticle.cxx:300 AliAnalysisTaskSingleParticle.cxx:301 AliAnalysisTaskSingleParticle.cxx:302 AliAnalysisTaskSingleParticle.cxx:303 AliAnalysisTaskSingleParticle.cxx:304 AliAnalysisTaskSingleParticle.cxx:305 AliAnalysisTaskSingleParticle.cxx:306 AliAnalysisTaskSingleParticle.cxx:307 AliAnalysisTaskSingleParticle.cxx:308 AliAnalysisTaskSingleParticle.cxx:309 AliAnalysisTaskSingleParticle.cxx:310 AliAnalysisTaskSingleParticle.cxx:311 AliAnalysisTaskSingleParticle.cxx:312 AliAnalysisTaskSingleParticle.cxx:313 AliAnalysisTaskSingleParticle.cxx:314 AliAnalysisTaskSingleParticle.cxx:315 AliAnalysisTaskSingleParticle.cxx:316 AliAnalysisTaskSingleParticle.cxx:317 AliAnalysisTaskSingleParticle.cxx:318 AliAnalysisTaskSingleParticle.cxx:319 AliAnalysisTaskSingleParticle.cxx:320 AliAnalysisTaskSingleParticle.cxx:321 AliAnalysisTaskSingleParticle.cxx:322 AliAnalysisTaskSingleParticle.cxx:323 AliAnalysisTaskSingleParticle.cxx:324 AliAnalysisTaskSingleParticle.cxx:325 AliAnalysisTaskSingleParticle.cxx:326 AliAnalysisTaskSingleParticle.cxx:327 AliAnalysisTaskSingleParticle.cxx:328 AliAnalysisTaskSingleParticle.cxx:329 AliAnalysisTaskSingleParticle.cxx:330 AliAnalysisTaskSingleParticle.cxx:331 AliAnalysisTaskSingleParticle.cxx:332 AliAnalysisTaskSingleParticle.cxx:333 AliAnalysisTaskSingleParticle.cxx:334 AliAnalysisTaskSingleParticle.cxx:335 AliAnalysisTaskSingleParticle.cxx:336 AliAnalysisTaskSingleParticle.cxx:337 AliAnalysisTaskSingleParticle.cxx:338 AliAnalysisTaskSingleParticle.cxx:339 AliAnalysisTaskSingleParticle.cxx:340 AliAnalysisTaskSingleParticle.cxx:341 AliAnalysisTaskSingleParticle.cxx:342 AliAnalysisTaskSingleParticle.cxx:343 AliAnalysisTaskSingleParticle.cxx:344 AliAnalysisTaskSingleParticle.cxx:345 AliAnalysisTaskSingleParticle.cxx:346 AliAnalysisTaskSingleParticle.cxx:347 AliAnalysisTaskSingleParticle.cxx:348 AliAnalysisTaskSingleParticle.cxx:349 AliAnalysisTaskSingleParticle.cxx:350 AliAnalysisTaskSingleParticle.cxx:351 AliAnalysisTaskSingleParticle.cxx:352 AliAnalysisTaskSingleParticle.cxx:353 AliAnalysisTaskSingleParticle.cxx:354 AliAnalysisTaskSingleParticle.cxx:355 AliAnalysisTaskSingleParticle.cxx:356 AliAnalysisTaskSingleParticle.cxx:357 AliAnalysisTaskSingleParticle.cxx:358 AliAnalysisTaskSingleParticle.cxx:359 AliAnalysisTaskSingleParticle.cxx:360 AliAnalysisTaskSingleParticle.cxx:361 AliAnalysisTaskSingleParticle.cxx:362 AliAnalysisTaskSingleParticle.cxx:363 AliAnalysisTaskSingleParticle.cxx:364 AliAnalysisTaskSingleParticle.cxx:365 AliAnalysisTaskSingleParticle.cxx:366 AliAnalysisTaskSingleParticle.cxx:367 AliAnalysisTaskSingleParticle.cxx:368 AliAnalysisTaskSingleParticle.cxx:369 AliAnalysisTaskSingleParticle.cxx:370 AliAnalysisTaskSingleParticle.cxx:371 AliAnalysisTaskSingleParticle.cxx:372 AliAnalysisTaskSingleParticle.cxx:373 AliAnalysisTaskSingleParticle.cxx:374 AliAnalysisTaskSingleParticle.cxx:375 AliAnalysisTaskSingleParticle.cxx:376 AliAnalysisTaskSingleParticle.cxx:377 AliAnalysisTaskSingleParticle.cxx:378 AliAnalysisTaskSingleParticle.cxx:379 AliAnalysisTaskSingleParticle.cxx:380 AliAnalysisTaskSingleParticle.cxx:381 AliAnalysisTaskSingleParticle.cxx:382 AliAnalysisTaskSingleParticle.cxx:383 AliAnalysisTaskSingleParticle.cxx:384 AliAnalysisTaskSingleParticle.cxx:385 AliAnalysisTaskSingleParticle.cxx:386 AliAnalysisTaskSingleParticle.cxx:387 AliAnalysisTaskSingleParticle.cxx:388 AliAnalysisTaskSingleParticle.cxx:389 AliAnalysisTaskSingleParticle.cxx:390 AliAnalysisTaskSingleParticle.cxx:391 AliAnalysisTaskSingleParticle.cxx:392 AliAnalysisTaskSingleParticle.cxx:393 AliAnalysisTaskSingleParticle.cxx:394 AliAnalysisTaskSingleParticle.cxx:395 AliAnalysisTaskSingleParticle.cxx:396 AliAnalysisTaskSingleParticle.cxx:397 AliAnalysisTaskSingleParticle.cxx:398 AliAnalysisTaskSingleParticle.cxx:399 AliAnalysisTaskSingleParticle.cxx:400 AliAnalysisTaskSingleParticle.cxx:401 AliAnalysisTaskSingleParticle.cxx:402 AliAnalysisTaskSingleParticle.cxx:403 AliAnalysisTaskSingleParticle.cxx:404 AliAnalysisTaskSingleParticle.cxx:405 AliAnalysisTaskSingleParticle.cxx:406 AliAnalysisTaskSingleParticle.cxx:407 AliAnalysisTaskSingleParticle.cxx:408 AliAnalysisTaskSingleParticle.cxx:409 AliAnalysisTaskSingleParticle.cxx:410 AliAnalysisTaskSingleParticle.cxx:411 AliAnalysisTaskSingleParticle.cxx:412 AliAnalysisTaskSingleParticle.cxx:413 AliAnalysisTaskSingleParticle.cxx:414 AliAnalysisTaskSingleParticle.cxx:415 AliAnalysisTaskSingleParticle.cxx:416 AliAnalysisTaskSingleParticle.cxx:417 AliAnalysisTaskSingleParticle.cxx:418 AliAnalysisTaskSingleParticle.cxx:419 AliAnalysisTaskSingleParticle.cxx:420 AliAnalysisTaskSingleParticle.cxx:421 AliAnalysisTaskSingleParticle.cxx:422 AliAnalysisTaskSingleParticle.cxx:423 AliAnalysisTaskSingleParticle.cxx:424 AliAnalysisTaskSingleParticle.cxx:425 AliAnalysisTaskSingleParticle.cxx:426 AliAnalysisTaskSingleParticle.cxx:427 AliAnalysisTaskSingleParticle.cxx:428 AliAnalysisTaskSingleParticle.cxx:429 AliAnalysisTaskSingleParticle.cxx:430 AliAnalysisTaskSingleParticle.cxx:431 AliAnalysisTaskSingleParticle.cxx:432 AliAnalysisTaskSingleParticle.cxx:433 AliAnalysisTaskSingleParticle.cxx:434 AliAnalysisTaskSingleParticle.cxx:435 AliAnalysisTaskSingleParticle.cxx:436 AliAnalysisTaskSingleParticle.cxx:437 AliAnalysisTaskSingleParticle.cxx:438 AliAnalysisTaskSingleParticle.cxx:439 AliAnalysisTaskSingleParticle.cxx:440 AliAnalysisTaskSingleParticle.cxx:441 AliAnalysisTaskSingleParticle.cxx:442 AliAnalysisTaskSingleParticle.cxx:443 AliAnalysisTaskSingleParticle.cxx:444 AliAnalysisTaskSingleParticle.cxx:445 AliAnalysisTaskSingleParticle.cxx:446 AliAnalysisTaskSingleParticle.cxx:447 AliAnalysisTaskSingleParticle.cxx:448 AliAnalysisTaskSingleParticle.cxx:449 AliAnalysisTaskSingleParticle.cxx:450 AliAnalysisTaskSingleParticle.cxx:451 AliAnalysisTaskSingleParticle.cxx:452 AliAnalysisTaskSingleParticle.cxx:453 AliAnalysisTaskSingleParticle.cxx:454 AliAnalysisTaskSingleParticle.cxx:455 AliAnalysisTaskSingleParticle.cxx:456 AliAnalysisTaskSingleParticle.cxx:457 AliAnalysisTaskSingleParticle.cxx:458 AliAnalysisTaskSingleParticle.cxx:459 AliAnalysisTaskSingleParticle.cxx:460 AliAnalysisTaskSingleParticle.cxx:461 AliAnalysisTaskSingleParticle.cxx:462 AliAnalysisTaskSingleParticle.cxx:463 AliAnalysisTaskSingleParticle.cxx:464 AliAnalysisTaskSingleParticle.cxx:465 AliAnalysisTaskSingleParticle.cxx:466 AliAnalysisTaskSingleParticle.cxx:467 AliAnalysisTaskSingleParticle.cxx:468 AliAnalysisTaskSingleParticle.cxx:469 AliAnalysisTaskSingleParticle.cxx:470 AliAnalysisTaskSingleParticle.cxx:471 AliAnalysisTaskSingleParticle.cxx:472 AliAnalysisTaskSingleParticle.cxx:473 AliAnalysisTaskSingleParticle.cxx:474 AliAnalysisTaskSingleParticle.cxx:475 AliAnalysisTaskSingleParticle.cxx:476 AliAnalysisTaskSingleParticle.cxx:477 AliAnalysisTaskSingleParticle.cxx:478 AliAnalysisTaskSingleParticle.cxx:479 AliAnalysisTaskSingleParticle.cxx:480 AliAnalysisTaskSingleParticle.cxx:481 AliAnalysisTaskSingleParticle.cxx:482 AliAnalysisTaskSingleParticle.cxx:483 AliAnalysisTaskSingleParticle.cxx:484 AliAnalysisTaskSingleParticle.cxx:485 AliAnalysisTaskSingleParticle.cxx:486 AliAnalysisTaskSingleParticle.cxx:487 AliAnalysisTaskSingleParticle.cxx:488 AliAnalysisTaskSingleParticle.cxx:489 AliAnalysisTaskSingleParticle.cxx:490 AliAnalysisTaskSingleParticle.cxx:491 AliAnalysisTaskSingleParticle.cxx:492 AliAnalysisTaskSingleParticle.cxx:493 AliAnalysisTaskSingleParticle.cxx:494 AliAnalysisTaskSingleParticle.cxx:495 AliAnalysisTaskSingleParticle.cxx:496 AliAnalysisTaskSingleParticle.cxx:497 AliAnalysisTaskSingleParticle.cxx:498 AliAnalysisTaskSingleParticle.cxx:499 AliAnalysisTaskSingleParticle.cxx:500 AliAnalysisTaskSingleParticle.cxx:501 AliAnalysisTaskSingleParticle.cxx:502 AliAnalysisTaskSingleParticle.cxx:503 AliAnalysisTaskSingleParticle.cxx:504 AliAnalysisTaskSingleParticle.cxx:505 AliAnalysisTaskSingleParticle.cxx:506 AliAnalysisTaskSingleParticle.cxx:507 AliAnalysisTaskSingleParticle.cxx:508 AliAnalysisTaskSingleParticle.cxx:509 AliAnalysisTaskSingleParticle.cxx:510 AliAnalysisTaskSingleParticle.cxx:511 AliAnalysisTaskSingleParticle.cxx:512 AliAnalysisTaskSingleParticle.cxx:513 AliAnalysisTaskSingleParticle.cxx:514 AliAnalysisTaskSingleParticle.cxx:515 AliAnalysisTaskSingleParticle.cxx:516 AliAnalysisTaskSingleParticle.cxx:517 AliAnalysisTaskSingleParticle.cxx:518 AliAnalysisTaskSingleParticle.cxx:519 AliAnalysisTaskSingleParticle.cxx:520 AliAnalysisTaskSingleParticle.cxx:521 AliAnalysisTaskSingleParticle.cxx:522 AliAnalysisTaskSingleParticle.cxx:523 AliAnalysisTaskSingleParticle.cxx:524 AliAnalysisTaskSingleParticle.cxx:525 AliAnalysisTaskSingleParticle.cxx:526 AliAnalysisTaskSingleParticle.cxx:527 AliAnalysisTaskSingleParticle.cxx:528 AliAnalysisTaskSingleParticle.cxx:529 AliAnalysisTaskSingleParticle.cxx:530 AliAnalysisTaskSingleParticle.cxx:531