#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 "AliVTrack.h"
#include "AliAODMCParticle.h"
#include "AliVParticle.h"
#include "AliAODEvent.h"
#include "AliAODInputHandler.h"
#include "AliAnalysisTaskContMC.h"
#include "AliAnalysisTaskESDfilter.h"
#include "AliAnalysisDataContainer.h"
#include "AliHelperPID.h"
#include "AliCentrality.h"
#include "TProof.h"
#include "AliPID.h"
#include "AliVEvent.h"
#include "AliPIDResponse.h"
#include "AliStack.h"
#include <TMCProcess.h>
#include <iostream>
using namespace std;
ClassImp(AliAnalysisTaskContMC)
AliAnalysisTaskContMC::AliAnalysisTaskContMC(const char *name) : AliAnalysisTaskSE(name), fAOD(0), fNSigmaPID(0), fIsMC(0), fOutput(0), fHistID(0)
{
DefineInput(0, TChain::Class());
DefineOutput(1, TList::Class());
}
void AliAnalysisTaskContMC::UserCreateOutputObjects()
{
Printf("\n\n\n\n\n\n In CreateOutput Object:");
Printf("NSigma: %.1f",fNSigmaPID->GetNSigmaCut());
Printf("IsMC: %d",fNSigmaPID->GetisMC());
fOutput = new TList();
fOutput->SetOwner();
fOutput->SetName("list");
fHistID = new TH3F("fHistID","fHistID",6,-1.5,4.5,4,-1.5,2.5,38,0.2,4);
fOutput->Add(fHistID);
if(!fNSigmaPID)AliFatal("PID object should be set in the steering macro");
fOutput->Add(fNSigmaPID);
PostData(1, fOutput );
}
void AliAnalysisTaskContMC::UserExec(Option_t *)
{
const Int_t npart=4;
const Int_t pdgcode[npart+2]={-1,211,321,2212,11,13};
const Int_t partid[npart+2]={-1,0,1,2,3,4};
fAOD = dynamic_cast<AliAODEvent*>(fInputEvent);
if (!fAOD) {
AliWarning("ERROR: AliAODEvent not available \n");
return;
}
if (strcmp(fAOD->ClassName(), "AliAODEvent"))
{
AliFatal("Not processing AODs");
}
TClonesArray *arrayMC = 0;
Printf("fIsMC: %d",fIsMC);
if (fIsMC)
{
arrayMC = (TClonesArray*) fAOD->GetList()->FindObject(AliAODMCParticle::StdBranchName());
if (!arrayMC) {
AliFatal("Error: MC particles branch not found!\n");
}
}
Double_t centrality = 0;
AliCentrality *centralityObj = ((AliVAODHeader*)fAOD->GetHeader())->GetCentralityP();
if (centralityObj)
{
centrality = centralityObj->GetCentralityPercentileUnchecked("V0M");
AliInfo(Form("Centrality is %f", centrality));
}
else
{
Printf("WARNING: Centrality object is 0");
centrality = -1;
}
if (centrality < 0)
return;
Int_t nVertex = ((AliAODEvent*)fAOD)->GetNumberOfVertices();
if( nVertex > 0 ) {
AliAODVertex* vertex = (AliAODVertex*)((AliAODEvent*)fAOD)->GetPrimaryVertex();
Double_t zVertex = vertex->GetZ();
if(TMath::Abs(zVertex)>10) return;
TString name(vertex->GetName());
if (name.CompareTo("PrimaryVertex") && name.CompareTo("SPDVertex"))return;
}
for (Int_t iTracks = 0; iTracks < fAOD->GetNumberOfTracks(); iTracks++) {
AliAODTrack* track = dynamic_cast<AliAODTrack*>(fAOD->GetTrack(iTracks));
if(!track) AliFatal("Not a standard AOD");
if(!(track->TestFilterBit(32)))continue;
if (TMath::Abs(track->Eta()) > .8 || track->Pt() < .2) continue;
Int_t pdg=-999;
Int_t isph=-999;
if (fIsMC && arrayMC) {
AliAODMCParticle *partMC = (AliAODMCParticle*) arrayMC->At(TMath::Abs(track->GetLabel()));
if (!partMC) {
AliError("Cannot get MC particle");
continue;
}
pdg=TMath::Abs(partMC->GetPdgCode());
isph=partMC->IsPhysicalPrimary();
}
if(!isph)continue;
UInt_t status;
status=track->GetStatus();
if((status&AliVTrack::kTOFout)==0 || (status&AliVTrack::kTIME)==0)continue;
Int_t IDTPCTOF=fNSigmaPID->GetParticleSpecies(track,1);
if(IDTPCTOF==999)IDTPCTOF=-1;
Int_t IDMC=-1;
for(Int_t ipart=0;ipart<npart+2;ipart++)if(TMath::Abs(pdg)==pdgcode[ipart])IDMC=partid[ipart];
fHistID->Fill(IDMC,IDTPCTOF,track->Pt());
}
PostData(1,fOutput);
}
void AliAnalysisTaskContMC::Terminate(Option_t *)
{
fOutput = dynamic_cast<TList*>(GetOutputData(1));
if (!fOutput) {
printf("ERROR: fOutput not available\n");
return;
}
fHistID = dynamic_cast<TH3F*>(fOutput->FindObject("fHistID"));
fNSigmaPID = dynamic_cast<AliHelperPID*>(fOutput->FindObject("fNSigmaPID"));
}
AliAnalysisTaskContMC.cxx:1 AliAnalysisTaskContMC.cxx:2 AliAnalysisTaskContMC.cxx:3 AliAnalysisTaskContMC.cxx:4 AliAnalysisTaskContMC.cxx:5 AliAnalysisTaskContMC.cxx:6 AliAnalysisTaskContMC.cxx:7 AliAnalysisTaskContMC.cxx:8 AliAnalysisTaskContMC.cxx:9 AliAnalysisTaskContMC.cxx:10 AliAnalysisTaskContMC.cxx:11 AliAnalysisTaskContMC.cxx:12 AliAnalysisTaskContMC.cxx:13 AliAnalysisTaskContMC.cxx:14 AliAnalysisTaskContMC.cxx:15 AliAnalysisTaskContMC.cxx:16 AliAnalysisTaskContMC.cxx:17 AliAnalysisTaskContMC.cxx:18 AliAnalysisTaskContMC.cxx:19 AliAnalysisTaskContMC.cxx:20 AliAnalysisTaskContMC.cxx:21 AliAnalysisTaskContMC.cxx:22 AliAnalysisTaskContMC.cxx:23 AliAnalysisTaskContMC.cxx:24 AliAnalysisTaskContMC.cxx:25 AliAnalysisTaskContMC.cxx:26 AliAnalysisTaskContMC.cxx:27 AliAnalysisTaskContMC.cxx:28 AliAnalysisTaskContMC.cxx:29 AliAnalysisTaskContMC.cxx:30 AliAnalysisTaskContMC.cxx:31 AliAnalysisTaskContMC.cxx:32 AliAnalysisTaskContMC.cxx:33 AliAnalysisTaskContMC.cxx:34 AliAnalysisTaskContMC.cxx:35 AliAnalysisTaskContMC.cxx:36 AliAnalysisTaskContMC.cxx:37 AliAnalysisTaskContMC.cxx:38 AliAnalysisTaskContMC.cxx:39 AliAnalysisTaskContMC.cxx:40 AliAnalysisTaskContMC.cxx:41 AliAnalysisTaskContMC.cxx:42 AliAnalysisTaskContMC.cxx:43 AliAnalysisTaskContMC.cxx:44 AliAnalysisTaskContMC.cxx:45 AliAnalysisTaskContMC.cxx:46 AliAnalysisTaskContMC.cxx:47 AliAnalysisTaskContMC.cxx:48 AliAnalysisTaskContMC.cxx:49 AliAnalysisTaskContMC.cxx:50 AliAnalysisTaskContMC.cxx:51 AliAnalysisTaskContMC.cxx:52 AliAnalysisTaskContMC.cxx:53 AliAnalysisTaskContMC.cxx:54 AliAnalysisTaskContMC.cxx:55 AliAnalysisTaskContMC.cxx:56 AliAnalysisTaskContMC.cxx:57 AliAnalysisTaskContMC.cxx:58 AliAnalysisTaskContMC.cxx:59 AliAnalysisTaskContMC.cxx:60 AliAnalysisTaskContMC.cxx:61 AliAnalysisTaskContMC.cxx:62 AliAnalysisTaskContMC.cxx:63 AliAnalysisTaskContMC.cxx:64 AliAnalysisTaskContMC.cxx:65 AliAnalysisTaskContMC.cxx:66 AliAnalysisTaskContMC.cxx:67 AliAnalysisTaskContMC.cxx:68 AliAnalysisTaskContMC.cxx:69 AliAnalysisTaskContMC.cxx:70 AliAnalysisTaskContMC.cxx:71 AliAnalysisTaskContMC.cxx:72 AliAnalysisTaskContMC.cxx:73 AliAnalysisTaskContMC.cxx:74 AliAnalysisTaskContMC.cxx:75 AliAnalysisTaskContMC.cxx:76 AliAnalysisTaskContMC.cxx:77 AliAnalysisTaskContMC.cxx:78 AliAnalysisTaskContMC.cxx:79 AliAnalysisTaskContMC.cxx:80 AliAnalysisTaskContMC.cxx:81 AliAnalysisTaskContMC.cxx:82 AliAnalysisTaskContMC.cxx:83 AliAnalysisTaskContMC.cxx:84 AliAnalysisTaskContMC.cxx:85 AliAnalysisTaskContMC.cxx:86 AliAnalysisTaskContMC.cxx:87 AliAnalysisTaskContMC.cxx:88 AliAnalysisTaskContMC.cxx:89 AliAnalysisTaskContMC.cxx:90 AliAnalysisTaskContMC.cxx:91 AliAnalysisTaskContMC.cxx:92 AliAnalysisTaskContMC.cxx:93 AliAnalysisTaskContMC.cxx:94 AliAnalysisTaskContMC.cxx:95 AliAnalysisTaskContMC.cxx:96 AliAnalysisTaskContMC.cxx:97 AliAnalysisTaskContMC.cxx:98 AliAnalysisTaskContMC.cxx:99 AliAnalysisTaskContMC.cxx:100 AliAnalysisTaskContMC.cxx:101 AliAnalysisTaskContMC.cxx:102 AliAnalysisTaskContMC.cxx:103 AliAnalysisTaskContMC.cxx:104 AliAnalysisTaskContMC.cxx:105 AliAnalysisTaskContMC.cxx:106 AliAnalysisTaskContMC.cxx:107 AliAnalysisTaskContMC.cxx:108 AliAnalysisTaskContMC.cxx:109 AliAnalysisTaskContMC.cxx:110 AliAnalysisTaskContMC.cxx:111 AliAnalysisTaskContMC.cxx:112 AliAnalysisTaskContMC.cxx:113 AliAnalysisTaskContMC.cxx:114 AliAnalysisTaskContMC.cxx:115 AliAnalysisTaskContMC.cxx:116 AliAnalysisTaskContMC.cxx:117 AliAnalysisTaskContMC.cxx:118 AliAnalysisTaskContMC.cxx:119 AliAnalysisTaskContMC.cxx:120 AliAnalysisTaskContMC.cxx:121 AliAnalysisTaskContMC.cxx:122 AliAnalysisTaskContMC.cxx:123 AliAnalysisTaskContMC.cxx:124 AliAnalysisTaskContMC.cxx:125 AliAnalysisTaskContMC.cxx:126 AliAnalysisTaskContMC.cxx:127 AliAnalysisTaskContMC.cxx:128 AliAnalysisTaskContMC.cxx:129 AliAnalysisTaskContMC.cxx:130 AliAnalysisTaskContMC.cxx:131 AliAnalysisTaskContMC.cxx:132 AliAnalysisTaskContMC.cxx:133 AliAnalysisTaskContMC.cxx:134 AliAnalysisTaskContMC.cxx:135 AliAnalysisTaskContMC.cxx:136 AliAnalysisTaskContMC.cxx:137 AliAnalysisTaskContMC.cxx:138 AliAnalysisTaskContMC.cxx:139 AliAnalysisTaskContMC.cxx:140 AliAnalysisTaskContMC.cxx:141 AliAnalysisTaskContMC.cxx:142 AliAnalysisTaskContMC.cxx:143 AliAnalysisTaskContMC.cxx:144 AliAnalysisTaskContMC.cxx:145 AliAnalysisTaskContMC.cxx:146 AliAnalysisTaskContMC.cxx:147 AliAnalysisTaskContMC.cxx:148 AliAnalysisTaskContMC.cxx:149 AliAnalysisTaskContMC.cxx:150 AliAnalysisTaskContMC.cxx:151 AliAnalysisTaskContMC.cxx:152 AliAnalysisTaskContMC.cxx:153 AliAnalysisTaskContMC.cxx:154 AliAnalysisTaskContMC.cxx:155 AliAnalysisTaskContMC.cxx:156 AliAnalysisTaskContMC.cxx:157 AliAnalysisTaskContMC.cxx:158 AliAnalysisTaskContMC.cxx:159 AliAnalysisTaskContMC.cxx:160 AliAnalysisTaskContMC.cxx:161 AliAnalysisTaskContMC.cxx:162 AliAnalysisTaskContMC.cxx:163 AliAnalysisTaskContMC.cxx:164 AliAnalysisTaskContMC.cxx:165 AliAnalysisTaskContMC.cxx:166 AliAnalysisTaskContMC.cxx:167 AliAnalysisTaskContMC.cxx:168 AliAnalysisTaskContMC.cxx:169 AliAnalysisTaskContMC.cxx:170 AliAnalysisTaskContMC.cxx:171 AliAnalysisTaskContMC.cxx:172 AliAnalysisTaskContMC.cxx:173 AliAnalysisTaskContMC.cxx:174 AliAnalysisTaskContMC.cxx:175 AliAnalysisTaskContMC.cxx:176 AliAnalysisTaskContMC.cxx:177 AliAnalysisTaskContMC.cxx:178 AliAnalysisTaskContMC.cxx:179 AliAnalysisTaskContMC.cxx:180 AliAnalysisTaskContMC.cxx:181 AliAnalysisTaskContMC.cxx:182 AliAnalysisTaskContMC.cxx:183 AliAnalysisTaskContMC.cxx:184 AliAnalysisTaskContMC.cxx:185 AliAnalysisTaskContMC.cxx:186 AliAnalysisTaskContMC.cxx:187 AliAnalysisTaskContMC.cxx:188 AliAnalysisTaskContMC.cxx:189 AliAnalysisTaskContMC.cxx:190 AliAnalysisTaskContMC.cxx:191 AliAnalysisTaskContMC.cxx:192 AliAnalysisTaskContMC.cxx:193 AliAnalysisTaskContMC.cxx:194