#include "TChain.h"
#include "TTree.h"
#include "TLegend.h"
#include "TH1F.h"
#include "TH2F.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 "AliAnalysisTaskSpectraAOD.h"
#include "AliAnalysisTaskESDfilter.h"
#include "AliAnalysisDataContainer.h"
#include "AliSpectraAODHistoManager.h"
#include "AliSpectraAODTrackCuts.h"
#include "AliSpectraAODEventCuts.h"
#include "AliCentrality.h"
#include "TProof.h"
#include "AliPID.h"
#include "AliVEvent.h"
#include "AliPIDResponse.h"
#include "AliStack.h"
#include "AliSpectraAODPID.h"
#include <TMCProcess.h>
#include <iostream>
using namespace AliSpectraNameSpace;
using namespace std;
ClassImp(AliAnalysisTaskSpectraAOD)
AliAnalysisTaskSpectraAOD::AliAnalysisTaskSpectraAOD(const char *name) : AliAnalysisTaskSE(name), fAOD(0), fHistMan(0), fTrackCuts(0), fEventCuts(0), fPID(0), fIsMC(0), fNRebin(0)
{
DefineInput(0, TChain::Class());
DefineOutput(1, AliSpectraAODHistoManager::Class());
DefineOutput(2, AliSpectraAODEventCuts::Class());
DefineOutput(3, AliSpectraAODTrackCuts::Class());
DefineOutput(4, AliSpectraAODPID::Class());
fNRebin=0;
}
void AliAnalysisTaskSpectraAOD::UserCreateOutputObjects()
{
fHistMan = new AliSpectraAODHistoManager("SpectraHistos",fNRebin);
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");
PostData(1, fHistMan );
PostData(2, fEventCuts);
PostData(3, fTrackCuts);
PostData(4, fPID );
}
void AliAnalysisTaskSpectraAOD::UserExec(Option_t *)
{
fAOD = dynamic_cast<AliAODEvent*>(fInputEvent);
if (!fAOD) {
AliWarning("ERROR: AliAODEvent not available \n");
return;
}
if (strcmp(fAOD->ClassName(), "AliAODEvent"))
{
AliFatal("Not processing AODs");
}
if(!fEventCuts->IsSelected(fAOD,fTrackCuts))return;
TClonesArray *arrayMC = 0;
if (fIsMC)
{
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())continue;
fHistMan->GetPtHistogram(kHistPtGen)->Fill(partMC->Pt(),partMC->IsPhysicalPrimary());
if(TMath::Abs(partMC->Y()) > fTrackCuts->GetY() ) continue;
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());
}
}
}
Double_t mass[3]={1.39570000000000000e-01,4.93676999999999977e-01,9.38271999999999995e-01};
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 (!fTrackCuts->IsSelected(track,kTRUE)) continue;
fPID->FillQAHistos(fHistMan, track, fTrackCuts);
Double_t dca=track->DCA();
if(dca==-999.){
Double_t d[2], covd[3];
AliAODTrack* track_clone=(AliAODTrack*)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];
}
fHistMan->GetPtHistogram(kHistPtRec)->Fill(track->Pt(),dca);
Int_t idRec = fPID->GetParticleSpecie(fHistMan,track, fTrackCuts);
Int_t charge = track->Charge() > 0 ? kChPos : kChNeg;
if(idRec != kSpUndefined){
if(fTrackCuts->CheckYCut (mass[idRec]))fHistMan->GetHistogram2D(kHistPtRecSigma,idRec,charge)->Fill(track->Pt(),dca);
}
if (arrayMC) {
AliAODMCParticle *partMC = (AliAODMCParticle*) arrayMC->At(TMath::Abs(track->GetLabel()));
if (!partMC) {
AliError("Cannot get MC particle");
continue;
}
Bool_t isPrimary = partMC->IsPhysicalPrimary();
Bool_t isSecondaryMaterial = kFALSE;
Bool_t isSecondaryWeak = kFALSE;
if(!isPrimary) {
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 (isPrimary)fHistMan->GetPtHistogram(kHistPtRecPrimary)->Fill(track->Pt(),dca);
if(idRec == kSpUndefined) continue;
if(!fTrackCuts->CheckYCut (mass[idRec])) continue;
Int_t idGen = fPID->GetParticleSpecie(partMC);
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 ( partMC->PdgCode() == 13 && idRec == kSpPion) {
fHistMan->GetPtHistogram(kHistPtRecTrueMuonPlus)->Fill(track->Pt(),dca);
if(isPrimary)
fHistMan->GetPtHistogram(kHistPtRecTruePrimaryMuonPlus)->Fill(track->Pt(),dca);
}
if ( partMC->PdgCode() == -13 && idRec == kSpPion) {
fHistMan->GetPtHistogram(kHistPtRecTrueMuonMinus)->Fill(track->Pt(),dca);
if (isPrimary) {
fHistMan->GetPtHistogram(kHistPtRecTruePrimaryMuonMinus)->Fill(track->Pt(),dca);
}
}
if(isSecondaryWeak ) fHistMan->GetHistogram2D(kHistPtRecSigmaSecondaryWeakDecay, idRec, charge)->Fill(track->Pt(),dca);
if(isSecondaryMaterial) fHistMan->GetHistogram2D(kHistPtRecSigmaSecondaryMaterial , idRec, charge)->Fill(track->Pt(),dca);
}
}
PostData(1, fHistMan );
PostData(2, fEventCuts);
PostData(3, fTrackCuts);
PostData(4, fPID );
}
void AliAnalysisTaskSpectraAOD::Terminate(Option_t *)
{
}
AliAnalysisTaskSpectraAOD.cxx:1 AliAnalysisTaskSpectraAOD.cxx:2 AliAnalysisTaskSpectraAOD.cxx:3 AliAnalysisTaskSpectraAOD.cxx:4 AliAnalysisTaskSpectraAOD.cxx:5 AliAnalysisTaskSpectraAOD.cxx:6 AliAnalysisTaskSpectraAOD.cxx:7 AliAnalysisTaskSpectraAOD.cxx:8 AliAnalysisTaskSpectraAOD.cxx:9 AliAnalysisTaskSpectraAOD.cxx:10 AliAnalysisTaskSpectraAOD.cxx:11 AliAnalysisTaskSpectraAOD.cxx:12 AliAnalysisTaskSpectraAOD.cxx:13 AliAnalysisTaskSpectraAOD.cxx:14 AliAnalysisTaskSpectraAOD.cxx:15 AliAnalysisTaskSpectraAOD.cxx:16 AliAnalysisTaskSpectraAOD.cxx:17 AliAnalysisTaskSpectraAOD.cxx:18 AliAnalysisTaskSpectraAOD.cxx:19 AliAnalysisTaskSpectraAOD.cxx:20 AliAnalysisTaskSpectraAOD.cxx:21 AliAnalysisTaskSpectraAOD.cxx:22 AliAnalysisTaskSpectraAOD.cxx:23 AliAnalysisTaskSpectraAOD.cxx:24 AliAnalysisTaskSpectraAOD.cxx:25 AliAnalysisTaskSpectraAOD.cxx:26 AliAnalysisTaskSpectraAOD.cxx:27 AliAnalysisTaskSpectraAOD.cxx:28 AliAnalysisTaskSpectraAOD.cxx:29 AliAnalysisTaskSpectraAOD.cxx:30 AliAnalysisTaskSpectraAOD.cxx:31 AliAnalysisTaskSpectraAOD.cxx:32 AliAnalysisTaskSpectraAOD.cxx:33 AliAnalysisTaskSpectraAOD.cxx:34 AliAnalysisTaskSpectraAOD.cxx:35 AliAnalysisTaskSpectraAOD.cxx:36 AliAnalysisTaskSpectraAOD.cxx:37 AliAnalysisTaskSpectraAOD.cxx:38 AliAnalysisTaskSpectraAOD.cxx:39 AliAnalysisTaskSpectraAOD.cxx:40 AliAnalysisTaskSpectraAOD.cxx:41 AliAnalysisTaskSpectraAOD.cxx:42 AliAnalysisTaskSpectraAOD.cxx:43 AliAnalysisTaskSpectraAOD.cxx:44 AliAnalysisTaskSpectraAOD.cxx:45 AliAnalysisTaskSpectraAOD.cxx:46 AliAnalysisTaskSpectraAOD.cxx:47 AliAnalysisTaskSpectraAOD.cxx:48 AliAnalysisTaskSpectraAOD.cxx:49 AliAnalysisTaskSpectraAOD.cxx:50 AliAnalysisTaskSpectraAOD.cxx:51 AliAnalysisTaskSpectraAOD.cxx:52 AliAnalysisTaskSpectraAOD.cxx:53 AliAnalysisTaskSpectraAOD.cxx:54 AliAnalysisTaskSpectraAOD.cxx:55 AliAnalysisTaskSpectraAOD.cxx:56 AliAnalysisTaskSpectraAOD.cxx:57 AliAnalysisTaskSpectraAOD.cxx:58 AliAnalysisTaskSpectraAOD.cxx:59 AliAnalysisTaskSpectraAOD.cxx:60 AliAnalysisTaskSpectraAOD.cxx:61 AliAnalysisTaskSpectraAOD.cxx:62 AliAnalysisTaskSpectraAOD.cxx:63 AliAnalysisTaskSpectraAOD.cxx:64 AliAnalysisTaskSpectraAOD.cxx:65 AliAnalysisTaskSpectraAOD.cxx:66 AliAnalysisTaskSpectraAOD.cxx:67 AliAnalysisTaskSpectraAOD.cxx:68 AliAnalysisTaskSpectraAOD.cxx:69 AliAnalysisTaskSpectraAOD.cxx:70 AliAnalysisTaskSpectraAOD.cxx:71 AliAnalysisTaskSpectraAOD.cxx:72 AliAnalysisTaskSpectraAOD.cxx:73 AliAnalysisTaskSpectraAOD.cxx:74 AliAnalysisTaskSpectraAOD.cxx:75 AliAnalysisTaskSpectraAOD.cxx:76 AliAnalysisTaskSpectraAOD.cxx:77 AliAnalysisTaskSpectraAOD.cxx:78 AliAnalysisTaskSpectraAOD.cxx:79 AliAnalysisTaskSpectraAOD.cxx:80 AliAnalysisTaskSpectraAOD.cxx:81 AliAnalysisTaskSpectraAOD.cxx:82 AliAnalysisTaskSpectraAOD.cxx:83 AliAnalysisTaskSpectraAOD.cxx:84 AliAnalysisTaskSpectraAOD.cxx:85 AliAnalysisTaskSpectraAOD.cxx:86 AliAnalysisTaskSpectraAOD.cxx:87 AliAnalysisTaskSpectraAOD.cxx:88 AliAnalysisTaskSpectraAOD.cxx:89 AliAnalysisTaskSpectraAOD.cxx:90 AliAnalysisTaskSpectraAOD.cxx:91 AliAnalysisTaskSpectraAOD.cxx:92 AliAnalysisTaskSpectraAOD.cxx:93 AliAnalysisTaskSpectraAOD.cxx:94 AliAnalysisTaskSpectraAOD.cxx:95 AliAnalysisTaskSpectraAOD.cxx:96 AliAnalysisTaskSpectraAOD.cxx:97 AliAnalysisTaskSpectraAOD.cxx:98 AliAnalysisTaskSpectraAOD.cxx:99 AliAnalysisTaskSpectraAOD.cxx:100 AliAnalysisTaskSpectraAOD.cxx:101 AliAnalysisTaskSpectraAOD.cxx:102 AliAnalysisTaskSpectraAOD.cxx:103 AliAnalysisTaskSpectraAOD.cxx:104 AliAnalysisTaskSpectraAOD.cxx:105 AliAnalysisTaskSpectraAOD.cxx:106 AliAnalysisTaskSpectraAOD.cxx:107 AliAnalysisTaskSpectraAOD.cxx:108 AliAnalysisTaskSpectraAOD.cxx:109 AliAnalysisTaskSpectraAOD.cxx:110 AliAnalysisTaskSpectraAOD.cxx:111 AliAnalysisTaskSpectraAOD.cxx:112 AliAnalysisTaskSpectraAOD.cxx:113 AliAnalysisTaskSpectraAOD.cxx:114 AliAnalysisTaskSpectraAOD.cxx:115 AliAnalysisTaskSpectraAOD.cxx:116 AliAnalysisTaskSpectraAOD.cxx:117 AliAnalysisTaskSpectraAOD.cxx:118 AliAnalysisTaskSpectraAOD.cxx:119 AliAnalysisTaskSpectraAOD.cxx:120 AliAnalysisTaskSpectraAOD.cxx:121 AliAnalysisTaskSpectraAOD.cxx:122 AliAnalysisTaskSpectraAOD.cxx:123 AliAnalysisTaskSpectraAOD.cxx:124 AliAnalysisTaskSpectraAOD.cxx:125 AliAnalysisTaskSpectraAOD.cxx:126 AliAnalysisTaskSpectraAOD.cxx:127 AliAnalysisTaskSpectraAOD.cxx:128 AliAnalysisTaskSpectraAOD.cxx:129 AliAnalysisTaskSpectraAOD.cxx:130 AliAnalysisTaskSpectraAOD.cxx:131 AliAnalysisTaskSpectraAOD.cxx:132 AliAnalysisTaskSpectraAOD.cxx:133 AliAnalysisTaskSpectraAOD.cxx:134 AliAnalysisTaskSpectraAOD.cxx:135 AliAnalysisTaskSpectraAOD.cxx:136 AliAnalysisTaskSpectraAOD.cxx:137 AliAnalysisTaskSpectraAOD.cxx:138 AliAnalysisTaskSpectraAOD.cxx:139 AliAnalysisTaskSpectraAOD.cxx:140 AliAnalysisTaskSpectraAOD.cxx:141 AliAnalysisTaskSpectraAOD.cxx:142 AliAnalysisTaskSpectraAOD.cxx:143 AliAnalysisTaskSpectraAOD.cxx:144 AliAnalysisTaskSpectraAOD.cxx:145 AliAnalysisTaskSpectraAOD.cxx:146 AliAnalysisTaskSpectraAOD.cxx:147 AliAnalysisTaskSpectraAOD.cxx:148 AliAnalysisTaskSpectraAOD.cxx:149 AliAnalysisTaskSpectraAOD.cxx:150 AliAnalysisTaskSpectraAOD.cxx:151 AliAnalysisTaskSpectraAOD.cxx:152 AliAnalysisTaskSpectraAOD.cxx:153 AliAnalysisTaskSpectraAOD.cxx:154 AliAnalysisTaskSpectraAOD.cxx:155 AliAnalysisTaskSpectraAOD.cxx:156 AliAnalysisTaskSpectraAOD.cxx:157 AliAnalysisTaskSpectraAOD.cxx:158 AliAnalysisTaskSpectraAOD.cxx:159 AliAnalysisTaskSpectraAOD.cxx:160 AliAnalysisTaskSpectraAOD.cxx:161 AliAnalysisTaskSpectraAOD.cxx:162 AliAnalysisTaskSpectraAOD.cxx:163 AliAnalysisTaskSpectraAOD.cxx:164 AliAnalysisTaskSpectraAOD.cxx:165 AliAnalysisTaskSpectraAOD.cxx:166 AliAnalysisTaskSpectraAOD.cxx:167 AliAnalysisTaskSpectraAOD.cxx:168 AliAnalysisTaskSpectraAOD.cxx:169 AliAnalysisTaskSpectraAOD.cxx:170 AliAnalysisTaskSpectraAOD.cxx:171 AliAnalysisTaskSpectraAOD.cxx:172 AliAnalysisTaskSpectraAOD.cxx:173 AliAnalysisTaskSpectraAOD.cxx:174 AliAnalysisTaskSpectraAOD.cxx:175 AliAnalysisTaskSpectraAOD.cxx:176 AliAnalysisTaskSpectraAOD.cxx:177 AliAnalysisTaskSpectraAOD.cxx:178 AliAnalysisTaskSpectraAOD.cxx:179 AliAnalysisTaskSpectraAOD.cxx:180 AliAnalysisTaskSpectraAOD.cxx:181 AliAnalysisTaskSpectraAOD.cxx:182 AliAnalysisTaskSpectraAOD.cxx:183 AliAnalysisTaskSpectraAOD.cxx:184 AliAnalysisTaskSpectraAOD.cxx:185 AliAnalysisTaskSpectraAOD.cxx:186 AliAnalysisTaskSpectraAOD.cxx:187 AliAnalysisTaskSpectraAOD.cxx:188 AliAnalysisTaskSpectraAOD.cxx:189 AliAnalysisTaskSpectraAOD.cxx:190 AliAnalysisTaskSpectraAOD.cxx:191 AliAnalysisTaskSpectraAOD.cxx:192 AliAnalysisTaskSpectraAOD.cxx:193 AliAnalysisTaskSpectraAOD.cxx:194 AliAnalysisTaskSpectraAOD.cxx:195 AliAnalysisTaskSpectraAOD.cxx:196 AliAnalysisTaskSpectraAOD.cxx:197 AliAnalysisTaskSpectraAOD.cxx:198 AliAnalysisTaskSpectraAOD.cxx:199 AliAnalysisTaskSpectraAOD.cxx:200 AliAnalysisTaskSpectraAOD.cxx:201 AliAnalysisTaskSpectraAOD.cxx:202 AliAnalysisTaskSpectraAOD.cxx:203 AliAnalysisTaskSpectraAOD.cxx:204 AliAnalysisTaskSpectraAOD.cxx:205 AliAnalysisTaskSpectraAOD.cxx:206 AliAnalysisTaskSpectraAOD.cxx:207 AliAnalysisTaskSpectraAOD.cxx:208 AliAnalysisTaskSpectraAOD.cxx:209 AliAnalysisTaskSpectraAOD.cxx:210 AliAnalysisTaskSpectraAOD.cxx:211 AliAnalysisTaskSpectraAOD.cxx:212 AliAnalysisTaskSpectraAOD.cxx:213 AliAnalysisTaskSpectraAOD.cxx:214 AliAnalysisTaskSpectraAOD.cxx:215 AliAnalysisTaskSpectraAOD.cxx:216 AliAnalysisTaskSpectraAOD.cxx:217 AliAnalysisTaskSpectraAOD.cxx:218 AliAnalysisTaskSpectraAOD.cxx:219 AliAnalysisTaskSpectraAOD.cxx:220 AliAnalysisTaskSpectraAOD.cxx:221 AliAnalysisTaskSpectraAOD.cxx:222 AliAnalysisTaskSpectraAOD.cxx:223 AliAnalysisTaskSpectraAOD.cxx:224 AliAnalysisTaskSpectraAOD.cxx:225 AliAnalysisTaskSpectraAOD.cxx:226 AliAnalysisTaskSpectraAOD.cxx:227 AliAnalysisTaskSpectraAOD.cxx:228 AliAnalysisTaskSpectraAOD.cxx:229 AliAnalysisTaskSpectraAOD.cxx:230 AliAnalysisTaskSpectraAOD.cxx:231 AliAnalysisTaskSpectraAOD.cxx:232 AliAnalysisTaskSpectraAOD.cxx:233 AliAnalysisTaskSpectraAOD.cxx:234 AliAnalysisTaskSpectraAOD.cxx:235 AliAnalysisTaskSpectraAOD.cxx:236 AliAnalysisTaskSpectraAOD.cxx:237 AliAnalysisTaskSpectraAOD.cxx:238 AliAnalysisTaskSpectraAOD.cxx:239 AliAnalysisTaskSpectraAOD.cxx:240 AliAnalysisTaskSpectraAOD.cxx:241 AliAnalysisTaskSpectraAOD.cxx:242 AliAnalysisTaskSpectraAOD.cxx:243 AliAnalysisTaskSpectraAOD.cxx:244 AliAnalysisTaskSpectraAOD.cxx:245 AliAnalysisTaskSpectraAOD.cxx:246 AliAnalysisTaskSpectraAOD.cxx:247 AliAnalysisTaskSpectraAOD.cxx:248 AliAnalysisTaskSpectraAOD.cxx:249 AliAnalysisTaskSpectraAOD.cxx:250