#include "AliAnalysisTaskESDNuclExFilterMC.h"
#include "AliAODEvent.h"
#include "AliAODHandler.h"
#include "AliAODExtension.h"
#include "AliAODMCParticle.h"
#include "AliAODMCNuclExReplicator.h"
#include "AliAODVertex.h"
#include "AliAnalysisFilter.h"
#include "AliAnalysisManager.h"
#include "AliCodeTimer.h"
#include "AliESDEvent.h"
#include "AliESDInputHandler.h"
#include "AliESDMuonTrack.h"
#include "AliESDVertex.h"
#include "AliESDtrack.h"
#include "AliLog.h"
#include "AliMCEvent.h"
#include "AliMCEventHandler.h"
#include "AliMultiplicity.h"
#include <TChain.h>
#include <TFile.h>
#include <TParticle.h>
#include "AliESDtrackCuts.h"
#include "AliAODTrack.h"
#include "AliAODPid.h"
#include "TF1.h"
using std::cout;
using std::endl;
ClassImp(AliAnalysisTaskESDNuclExFilterMC)
AliAnalysisTaskESDNuclExFilterMC::AliAnalysisTaskESDNuclExFilterMC(Bool_t onlyMuon, Bool_t keepAllEvents, Int_t mcMode, Int_t nsigmaTrk1,Int_t nsigmaTrk2, Int_t partType1,Int_t partType2):
AliAnalysisTaskSE(),
fTrackFilter(0x0),
fEnableMuonAOD(kTRUE),
fEnableDimuonAOD(kTRUE),
fOnlyMuon(onlyMuon),
fKeepAllEvents(keepAllEvents),
fMCMode(mcMode),
fnSigmaTrk1(nsigmaTrk1),
fnSigmaTrk2(nsigmaTrk2),
fpartType1(partType1),
fpartType2(partType2),
murep(0x0)
{
}
AliAnalysisTaskESDNuclExFilterMC::AliAnalysisTaskESDNuclExFilterMC(const char* name, Bool_t onlyMuon, Bool_t keepAllEvents, Int_t mcMode, Int_t nsigmaTrk1,Int_t nsigmaTrk2, Int_t partType1,Int_t partType2):
AliAnalysisTaskSE(name),
fTrackFilter(0x0),
fEnableMuonAOD(kTRUE),
fEnableDimuonAOD(kTRUE),
fOnlyMuon(onlyMuon),
fKeepAllEvents(keepAllEvents),
fMCMode(mcMode),
fnSigmaTrk1(nsigmaTrk1),
fnSigmaTrk2(nsigmaTrk2),
fpartType1(partType1),
fpartType2(partType2),
murep(0x0)
{
}
void AliAnalysisTaskESDNuclExFilterMC::UserCreateOutputObjects()
{
if (fTrackFilter) OutputTree()->GetUserInfo()->Add(fTrackFilter);
}
void AliAnalysisTaskESDNuclExFilterMC::PrintTask(Option_t *option, Int_t indent) const
{
AliAnalysisTaskSE::PrintTask(option,indent);
TString spaces(' ',indent+3);
if ( fOnlyMuon )
{
cout << spaces.Data() << "Keep only muon information " << endl;
}
else
{
cout << spaces.Data() << "Keep all information from standard AOD" << endl;
}
if ( fKeepAllEvents )
{
cout << spaces.Data() << "Keep all events, regardless of number of muons" << endl;
}
else
{
cout << spaces.Data() << "Keep only events with at least one muon" << endl;
}
if ( fMCMode > 0 )
{
cout << spaces.Data() << "Assuming work on MC data (i.e. will transmit MC branches)" << endl;
}
}
void AliAnalysisTaskESDNuclExFilterMC::AddFilteredAOD(const char* aodfilename, const char* title, Bool_t toMerge)
{
AliAODHandler *aodH = (AliAODHandler*)((AliAnalysisManager::GetAnalysisManager())->GetOutputEventHandler());
if (!aodH) Fatal("UserCreateOutputObjects", "No AOD handler");
if(aodH){
AliAODExtension* ext = aodH->AddFilteredAOD(aodfilename,title,toMerge);
if (!ext) return;
if ( fOnlyMuon )
{
if(!murep)delete murep;
murep = new AliAODMCNuclExReplicator("NuclExReplicator",
"remove non interesting tracks",
fMCMode,fnSigmaTrk1,fnSigmaTrk2,fpartType1,fpartType2);
ext->DropUnspecifiedBranches();
ext->FilterBranch("header",murep);
ext->FilterBranch("vertices",murep);
ext->FilterBranch("nuclei",murep);
ext->FilterBranch("secvertices",murep);
ext->FilterBranch("daughtertracks",murep);
if ( fMCMode > 0 )
{
ext->FilterBranch("mcparticles",murep);
ext->FilterBranch("mcHeader",murep);
}
}
}
}
void AliAnalysisTaskESDNuclExFilterMC::Init()
{
if(fEnableMuonAOD)
AddFilteredAOD("AliAOD.NuclEx.root", "NuclexFilteredEvents",kTRUE);
}
void AliAnalysisTaskESDNuclExFilterMC::UserExec(Option_t *)
{
Long64_t ientry = Entry();
if(fDebug)printf("Muon Filter: Analysing event # %5d\n", (Int_t) ientry);
ConvertESDtoAOD();
}
void AliAnalysisTaskESDNuclExFilterMC::ConvertESDtoAOD()
{
AliAODEvent *lAODevent=(AliAODEvent*)InputEvent();
AliAODVertex *primary = lAODevent->GetPrimaryVertex();
if (fDebug && primary) primary->Print();
AliAODHandler* handler = dynamic_cast<AliAODHandler*>(AliAnalysisManager::GetAnalysisManager()->GetOutputEventHandler());
if ( handler ){
AliAODExtension *extNuclEx = handler->GetFilteredAOD("AliAOD.NuclEx.root");
if ( extNuclEx ) {
extNuclEx->SetEvent(lAODevent);
extNuclEx->SelectEvent();
extNuclEx->FinishEvent();
}
}
}
void AliAnalysisTaskESDNuclExFilterMC::Terminate(Option_t *)
{
if (fDebug > 1) printf("AnalysisESDfilter: Terminate() \n");
}
AliAnalysisTaskESDNuclExFilterMC.cxx:1 AliAnalysisTaskESDNuclExFilterMC.cxx:2 AliAnalysisTaskESDNuclExFilterMC.cxx:3 AliAnalysisTaskESDNuclExFilterMC.cxx:4 AliAnalysisTaskESDNuclExFilterMC.cxx:5 AliAnalysisTaskESDNuclExFilterMC.cxx:6 AliAnalysisTaskESDNuclExFilterMC.cxx:7 AliAnalysisTaskESDNuclExFilterMC.cxx:8 AliAnalysisTaskESDNuclExFilterMC.cxx:9 AliAnalysisTaskESDNuclExFilterMC.cxx:10 AliAnalysisTaskESDNuclExFilterMC.cxx:11 AliAnalysisTaskESDNuclExFilterMC.cxx:12 AliAnalysisTaskESDNuclExFilterMC.cxx:13 AliAnalysisTaskESDNuclExFilterMC.cxx:14 AliAnalysisTaskESDNuclExFilterMC.cxx:15 AliAnalysisTaskESDNuclExFilterMC.cxx:16 AliAnalysisTaskESDNuclExFilterMC.cxx:17 AliAnalysisTaskESDNuclExFilterMC.cxx:18 AliAnalysisTaskESDNuclExFilterMC.cxx:19 AliAnalysisTaskESDNuclExFilterMC.cxx:20 AliAnalysisTaskESDNuclExFilterMC.cxx:21 AliAnalysisTaskESDNuclExFilterMC.cxx:22 AliAnalysisTaskESDNuclExFilterMC.cxx:23 AliAnalysisTaskESDNuclExFilterMC.cxx:24 AliAnalysisTaskESDNuclExFilterMC.cxx:25 AliAnalysisTaskESDNuclExFilterMC.cxx:26 AliAnalysisTaskESDNuclExFilterMC.cxx:27 AliAnalysisTaskESDNuclExFilterMC.cxx:28 AliAnalysisTaskESDNuclExFilterMC.cxx:29 AliAnalysisTaskESDNuclExFilterMC.cxx:30 AliAnalysisTaskESDNuclExFilterMC.cxx:31 AliAnalysisTaskESDNuclExFilterMC.cxx:32 AliAnalysisTaskESDNuclExFilterMC.cxx:33 AliAnalysisTaskESDNuclExFilterMC.cxx:34 AliAnalysisTaskESDNuclExFilterMC.cxx:35 AliAnalysisTaskESDNuclExFilterMC.cxx:36 AliAnalysisTaskESDNuclExFilterMC.cxx:37 AliAnalysisTaskESDNuclExFilterMC.cxx:38 AliAnalysisTaskESDNuclExFilterMC.cxx:39 AliAnalysisTaskESDNuclExFilterMC.cxx:40 AliAnalysisTaskESDNuclExFilterMC.cxx:41 AliAnalysisTaskESDNuclExFilterMC.cxx:42 AliAnalysisTaskESDNuclExFilterMC.cxx:43 AliAnalysisTaskESDNuclExFilterMC.cxx:44 AliAnalysisTaskESDNuclExFilterMC.cxx:45 AliAnalysisTaskESDNuclExFilterMC.cxx:46 AliAnalysisTaskESDNuclExFilterMC.cxx:47 AliAnalysisTaskESDNuclExFilterMC.cxx:48 AliAnalysisTaskESDNuclExFilterMC.cxx:49 AliAnalysisTaskESDNuclExFilterMC.cxx:50 AliAnalysisTaskESDNuclExFilterMC.cxx:51 AliAnalysisTaskESDNuclExFilterMC.cxx:52 AliAnalysisTaskESDNuclExFilterMC.cxx:53 AliAnalysisTaskESDNuclExFilterMC.cxx:54 AliAnalysisTaskESDNuclExFilterMC.cxx:55 AliAnalysisTaskESDNuclExFilterMC.cxx:56 AliAnalysisTaskESDNuclExFilterMC.cxx:57 AliAnalysisTaskESDNuclExFilterMC.cxx:58 AliAnalysisTaskESDNuclExFilterMC.cxx:59 AliAnalysisTaskESDNuclExFilterMC.cxx:60 AliAnalysisTaskESDNuclExFilterMC.cxx:61 AliAnalysisTaskESDNuclExFilterMC.cxx:62 AliAnalysisTaskESDNuclExFilterMC.cxx:63 AliAnalysisTaskESDNuclExFilterMC.cxx:64 AliAnalysisTaskESDNuclExFilterMC.cxx:65 AliAnalysisTaskESDNuclExFilterMC.cxx:66 AliAnalysisTaskESDNuclExFilterMC.cxx:67 AliAnalysisTaskESDNuclExFilterMC.cxx:68 AliAnalysisTaskESDNuclExFilterMC.cxx:69 AliAnalysisTaskESDNuclExFilterMC.cxx:70 AliAnalysisTaskESDNuclExFilterMC.cxx:71 AliAnalysisTaskESDNuclExFilterMC.cxx:72 AliAnalysisTaskESDNuclExFilterMC.cxx:73 AliAnalysisTaskESDNuclExFilterMC.cxx:74 AliAnalysisTaskESDNuclExFilterMC.cxx:75 AliAnalysisTaskESDNuclExFilterMC.cxx:76 AliAnalysisTaskESDNuclExFilterMC.cxx:77 AliAnalysisTaskESDNuclExFilterMC.cxx:78 AliAnalysisTaskESDNuclExFilterMC.cxx:79 AliAnalysisTaskESDNuclExFilterMC.cxx:80 AliAnalysisTaskESDNuclExFilterMC.cxx:81 AliAnalysisTaskESDNuclExFilterMC.cxx:82 AliAnalysisTaskESDNuclExFilterMC.cxx:83 AliAnalysisTaskESDNuclExFilterMC.cxx:84 AliAnalysisTaskESDNuclExFilterMC.cxx:85 AliAnalysisTaskESDNuclExFilterMC.cxx:86 AliAnalysisTaskESDNuclExFilterMC.cxx:87 AliAnalysisTaskESDNuclExFilterMC.cxx:88 AliAnalysisTaskESDNuclExFilterMC.cxx:89 AliAnalysisTaskESDNuclExFilterMC.cxx:90 AliAnalysisTaskESDNuclExFilterMC.cxx:91 AliAnalysisTaskESDNuclExFilterMC.cxx:92 AliAnalysisTaskESDNuclExFilterMC.cxx:93 AliAnalysisTaskESDNuclExFilterMC.cxx:94 AliAnalysisTaskESDNuclExFilterMC.cxx:95 AliAnalysisTaskESDNuclExFilterMC.cxx:96 AliAnalysisTaskESDNuclExFilterMC.cxx:97 AliAnalysisTaskESDNuclExFilterMC.cxx:98 AliAnalysisTaskESDNuclExFilterMC.cxx:99 AliAnalysisTaskESDNuclExFilterMC.cxx:100 AliAnalysisTaskESDNuclExFilterMC.cxx:101 AliAnalysisTaskESDNuclExFilterMC.cxx:102 AliAnalysisTaskESDNuclExFilterMC.cxx:103 AliAnalysisTaskESDNuclExFilterMC.cxx:104 AliAnalysisTaskESDNuclExFilterMC.cxx:105 AliAnalysisTaskESDNuclExFilterMC.cxx:106 AliAnalysisTaskESDNuclExFilterMC.cxx:107 AliAnalysisTaskESDNuclExFilterMC.cxx:108 AliAnalysisTaskESDNuclExFilterMC.cxx:109 AliAnalysisTaskESDNuclExFilterMC.cxx:110 AliAnalysisTaskESDNuclExFilterMC.cxx:111 AliAnalysisTaskESDNuclExFilterMC.cxx:112 AliAnalysisTaskESDNuclExFilterMC.cxx:113 AliAnalysisTaskESDNuclExFilterMC.cxx:114 AliAnalysisTaskESDNuclExFilterMC.cxx:115 AliAnalysisTaskESDNuclExFilterMC.cxx:116 AliAnalysisTaskESDNuclExFilterMC.cxx:117 AliAnalysisTaskESDNuclExFilterMC.cxx:118 AliAnalysisTaskESDNuclExFilterMC.cxx:119 AliAnalysisTaskESDNuclExFilterMC.cxx:120 AliAnalysisTaskESDNuclExFilterMC.cxx:121 AliAnalysisTaskESDNuclExFilterMC.cxx:122 AliAnalysisTaskESDNuclExFilterMC.cxx:123 AliAnalysisTaskESDNuclExFilterMC.cxx:124 AliAnalysisTaskESDNuclExFilterMC.cxx:125 AliAnalysisTaskESDNuclExFilterMC.cxx:126 AliAnalysisTaskESDNuclExFilterMC.cxx:127 AliAnalysisTaskESDNuclExFilterMC.cxx:128 AliAnalysisTaskESDNuclExFilterMC.cxx:129 AliAnalysisTaskESDNuclExFilterMC.cxx:130 AliAnalysisTaskESDNuclExFilterMC.cxx:131 AliAnalysisTaskESDNuclExFilterMC.cxx:132 AliAnalysisTaskESDNuclExFilterMC.cxx:133 AliAnalysisTaskESDNuclExFilterMC.cxx:134 AliAnalysisTaskESDNuclExFilterMC.cxx:135 AliAnalysisTaskESDNuclExFilterMC.cxx:136 AliAnalysisTaskESDNuclExFilterMC.cxx:137 AliAnalysisTaskESDNuclExFilterMC.cxx:138 AliAnalysisTaskESDNuclExFilterMC.cxx:139 AliAnalysisTaskESDNuclExFilterMC.cxx:140 AliAnalysisTaskESDNuclExFilterMC.cxx:141 AliAnalysisTaskESDNuclExFilterMC.cxx:142 AliAnalysisTaskESDNuclExFilterMC.cxx:143 AliAnalysisTaskESDNuclExFilterMC.cxx:144 AliAnalysisTaskESDNuclExFilterMC.cxx:145 AliAnalysisTaskESDNuclExFilterMC.cxx:146 AliAnalysisTaskESDNuclExFilterMC.cxx:147 AliAnalysisTaskESDNuclExFilterMC.cxx:148 AliAnalysisTaskESDNuclExFilterMC.cxx:149 AliAnalysisTaskESDNuclExFilterMC.cxx:150 AliAnalysisTaskESDNuclExFilterMC.cxx:151 AliAnalysisTaskESDNuclExFilterMC.cxx:152 AliAnalysisTaskESDNuclExFilterMC.cxx:153 AliAnalysisTaskESDNuclExFilterMC.cxx:154 AliAnalysisTaskESDNuclExFilterMC.cxx:155 AliAnalysisTaskESDNuclExFilterMC.cxx:156 AliAnalysisTaskESDNuclExFilterMC.cxx:157 AliAnalysisTaskESDNuclExFilterMC.cxx:158 AliAnalysisTaskESDNuclExFilterMC.cxx:159 AliAnalysisTaskESDNuclExFilterMC.cxx:160 AliAnalysisTaskESDNuclExFilterMC.cxx:161 AliAnalysisTaskESDNuclExFilterMC.cxx:162 AliAnalysisTaskESDNuclExFilterMC.cxx:163 AliAnalysisTaskESDNuclExFilterMC.cxx:164 AliAnalysisTaskESDNuclExFilterMC.cxx:165 AliAnalysisTaskESDNuclExFilterMC.cxx:166 AliAnalysisTaskESDNuclExFilterMC.cxx:167 AliAnalysisTaskESDNuclExFilterMC.cxx:168 AliAnalysisTaskESDNuclExFilterMC.cxx:169 AliAnalysisTaskESDNuclExFilterMC.cxx:170 AliAnalysisTaskESDNuclExFilterMC.cxx:171 AliAnalysisTaskESDNuclExFilterMC.cxx:172 AliAnalysisTaskESDNuclExFilterMC.cxx:173 AliAnalysisTaskESDNuclExFilterMC.cxx:174 AliAnalysisTaskESDNuclExFilterMC.cxx:175 AliAnalysisTaskESDNuclExFilterMC.cxx:176 AliAnalysisTaskESDNuclExFilterMC.cxx:177 AliAnalysisTaskESDNuclExFilterMC.cxx:178 AliAnalysisTaskESDNuclExFilterMC.cxx:179 AliAnalysisTaskESDNuclExFilterMC.cxx:180 AliAnalysisTaskESDNuclExFilterMC.cxx:181 AliAnalysisTaskESDNuclExFilterMC.cxx:182 AliAnalysisTaskESDNuclExFilterMC.cxx:183 AliAnalysisTaskESDNuclExFilterMC.cxx:184 AliAnalysisTaskESDNuclExFilterMC.cxx:185 AliAnalysisTaskESDNuclExFilterMC.cxx:186 AliAnalysisTaskESDNuclExFilterMC.cxx:187 AliAnalysisTaskESDNuclExFilterMC.cxx:188 AliAnalysisTaskESDNuclExFilterMC.cxx:189 AliAnalysisTaskESDNuclExFilterMC.cxx:190 AliAnalysisTaskESDNuclExFilterMC.cxx:191 AliAnalysisTaskESDNuclExFilterMC.cxx:192 AliAnalysisTaskESDNuclExFilterMC.cxx:193 AliAnalysisTaskESDNuclExFilterMC.cxx:194 AliAnalysisTaskESDNuclExFilterMC.cxx:195 AliAnalysisTaskESDNuclExFilterMC.cxx:196 AliAnalysisTaskESDNuclExFilterMC.cxx:197 AliAnalysisTaskESDNuclExFilterMC.cxx:198 AliAnalysisTaskESDNuclExFilterMC.cxx:199 AliAnalysisTaskESDNuclExFilterMC.cxx:200 AliAnalysisTaskESDNuclExFilterMC.cxx:201 AliAnalysisTaskESDNuclExFilterMC.cxx:202 AliAnalysisTaskESDNuclExFilterMC.cxx:203 AliAnalysisTaskESDNuclExFilterMC.cxx:204 AliAnalysisTaskESDNuclExFilterMC.cxx:205 AliAnalysisTaskESDNuclExFilterMC.cxx:206 AliAnalysisTaskESDNuclExFilterMC.cxx:207 AliAnalysisTaskESDNuclExFilterMC.cxx:208 AliAnalysisTaskESDNuclExFilterMC.cxx:209 AliAnalysisTaskESDNuclExFilterMC.cxx:210 AliAnalysisTaskESDNuclExFilterMC.cxx:211 AliAnalysisTaskESDNuclExFilterMC.cxx:212 AliAnalysisTaskESDNuclExFilterMC.cxx:213 AliAnalysisTaskESDNuclExFilterMC.cxx:214 AliAnalysisTaskESDNuclExFilterMC.cxx:215 AliAnalysisTaskESDNuclExFilterMC.cxx:216 AliAnalysisTaskESDNuclExFilterMC.cxx:217 AliAnalysisTaskESDNuclExFilterMC.cxx:218 AliAnalysisTaskESDNuclExFilterMC.cxx:219 AliAnalysisTaskESDNuclExFilterMC.cxx:220 AliAnalysisTaskESDNuclExFilterMC.cxx:221 AliAnalysisTaskESDNuclExFilterMC.cxx:222 AliAnalysisTaskESDNuclExFilterMC.cxx:223 AliAnalysisTaskESDNuclExFilterMC.cxx:224 AliAnalysisTaskESDNuclExFilterMC.cxx:225 AliAnalysisTaskESDNuclExFilterMC.cxx:226 AliAnalysisTaskESDNuclExFilterMC.cxx:227 AliAnalysisTaskESDNuclExFilterMC.cxx:228 AliAnalysisTaskESDNuclExFilterMC.cxx:229 AliAnalysisTaskESDNuclExFilterMC.cxx:230 AliAnalysisTaskESDNuclExFilterMC.cxx:231 AliAnalysisTaskESDNuclExFilterMC.cxx:232 AliAnalysisTaskESDNuclExFilterMC.cxx:233 AliAnalysisTaskESDNuclExFilterMC.cxx:234 AliAnalysisTaskESDNuclExFilterMC.cxx:235 AliAnalysisTaskESDNuclExFilterMC.cxx:236 AliAnalysisTaskESDNuclExFilterMC.cxx:237 AliAnalysisTaskESDNuclExFilterMC.cxx:238 AliAnalysisTaskESDNuclExFilterMC.cxx:239 AliAnalysisTaskESDNuclExFilterMC.cxx:240 AliAnalysisTaskESDNuclExFilterMC.cxx:241 AliAnalysisTaskESDNuclExFilterMC.cxx:242 AliAnalysisTaskESDNuclExFilterMC.cxx:243 AliAnalysisTaskESDNuclExFilterMC.cxx:244 AliAnalysisTaskESDNuclExFilterMC.cxx:245 AliAnalysisTaskESDNuclExFilterMC.cxx:246 AliAnalysisTaskESDNuclExFilterMC.cxx:247 AliAnalysisTaskESDNuclExFilterMC.cxx:248 AliAnalysisTaskESDNuclExFilterMC.cxx:249 AliAnalysisTaskESDNuclExFilterMC.cxx:250 AliAnalysisTaskESDNuclExFilterMC.cxx:251 AliAnalysisTaskESDNuclExFilterMC.cxx:252 AliAnalysisTaskESDNuclExFilterMC.cxx:253 AliAnalysisTaskESDNuclExFilterMC.cxx:254 AliAnalysisTaskESDNuclExFilterMC.cxx:255 AliAnalysisTaskESDNuclExFilterMC.cxx:256 AliAnalysisTaskESDNuclExFilterMC.cxx:257 AliAnalysisTaskESDNuclExFilterMC.cxx:258