#include "TChain.h"
#include "TTree.h"
#include "AliAnalysisTaskME.h"
#include "AliAnalysisManager.h"
#include "AliAODEvent.h"
#include "AliAODTrack.h"
#include "AliAODVertex.h"
#include "AliMultiEventInputHandler.h"
#include "AliAODHandler.h"
#include "AliAnalysisTaskCreateMixedDimuons.h"
#include "AliEventPoolMuon.h"
#include "TDatabasePDG.h"
#include "TRandom.h"
#define AliAnalysisTaskCreateMixedDimuons_CXX
ClassImp(AliAnalysisTaskCreateMixedDimuons)
AliAnalysisTaskCreateMixedDimuons::AliAnalysisTaskCreateMixedDimuons(const char *name)
: AliAnalysisTaskME(name),
fBufferSize(0),
fOutputUserHandler(0x0),
fOutputUserAOD(0X0),
fOutputUserAODTree(0X0),
fPoolMuon(0X0),
fDebug(0X0)
{
DefineInput (0, TChain::Class());
DefineOutput(1, TTree::Class());
fDebug = kFALSE;
fBufferSize = 0;
RequireFreshBuffer();
for (Int_t i=0; i<100; i++) fInputAOD[i] = 0;
fOutputUserHandler = 0;
fOutputUserAOD = 0;
fOutputUserAODTree = 0;
}
void AliAnalysisTaskCreateMixedDimuons::ConnectInputData(Option_t *) {
printf("-> AliAnalysisTaskCreateMixedDimuons::ConnectInputData\n");
TTree* tree = (TTree*) GetInputData(0);
if (!tree) {
Printf("ERROR: Could not read chain from input slot 0");
}
else {
fInputHandler = (AliMultiEventInputHandler*) AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler();
fPoolMuon = (AliEventPoolMuon*) AliAnalysisManager::GetAnalysisManager()->GetEventPool();
if (!fInputHandler) {
Printf("ERROR: Could not get AliMultiAODInputHandler");
}
else {
fBufferSize = fInputHandler->GetBufferSize();
if (fBufferSize>100) {
printf("\n*** WARNING AliAnalysisTaskCreateMixedDimuons::ConnectInputData -> Trying to set fBufferSize>100, forcing fBufferSize=100 ***\n\n");
fBufferSize = 100;
}
for (Int_t i=0; i<fBufferSize; i++) fInputAOD[i] = (AliAODEvent*) fInputHandler->GetEvent(i);
}
}
printf("<- AliAnalysisTaskCreateMixedDimuons::ConnectInputData\n");
}
void AliAnalysisTaskCreateMixedDimuons::UserCreateOutputObjects() {
fOutputUserHandler = new AliAODHandler();
fOutputUserHandler -> Init("");
fOutputUserAOD = fOutputUserHandler -> GetAOD();
fOutputUserAODTree = fOutputUserHandler -> GetTree();
}
void AliAnalysisTaskCreateMixedDimuons::UserExec(Option_t *) {
if (!fOutputUserAOD) {
Printf("ERROR: fOutputUserAOD not available\n");
return;
}
printf("Calling USER EXEC\n\n");
for (Int_t iEv=0; iEv<fBufferSize; iEv++) {
for (Int_t jEv=0; jEv<iEv; jEv++) {
Int_t nTracksEv[2] = {0};
Int_t nFWMuonsEv[2] = {0};
nTracksEv[0] = fInputAOD[iEv]->GetNumberOfTracks();
nTracksEv[1] = fInputAOD[jEv]->GetNumberOfTracks();
if (!dynamic_cast<AliAODTrack*>(fInputAOD[iEv]->GetTrack(0)) || dynamic_cast<AliAODTrack*>(fInputAOD[jEv]->GetTrack(0))){
AliFatal("Not a standard AOD");
}
for (Int_t i=0; i<nTracksEv[0]; i++) if(((AliAODTrack*)fInputAOD[iEv]->GetTrack(i))->IsMuonTrack()) nFWMuonsEv[0]++;
for (Int_t i=0; i<nTracksEv[1]; i++) if(((AliAODTrack*)fInputAOD[jEv]->GetTrack(i))->IsMuonTrack()) nFWMuonsEv[1]++;
if (nFWMuonsEv[0] && nFWMuonsEv[1]) {
Int_t rndMuonTrack[2] = {0};
rndMuonTrack[0] = gRandom->Integer(nFWMuonsEv[0]);
rndMuonTrack[1] = gRandom->Integer(nFWMuonsEv[1]);
Int_t nFWMUonsAdded = 0;
Int_t nPosTracksAdded = 0;
Int_t nNegTracksAdded = 0;
AliAODVertex *vertex = new AliAODVertex();
vertex -> SetX(0.0);
vertex -> SetY(0.0);
vertex -> SetZ(fPoolMuon->GetMeanPrimaryVertexZ());
Int_t muonCounter[2] = {0};
for (Int_t i=0; i<nTracksEv[0]; i++) {
if(((AliAODTrack*)fInputAOD[iEv]->GetTrack(i))->IsMuonTrack()) {
if (fDebug) printf("fInputAOD[%d]->GetTrack(%d) = %p pt = %f uniqueID = %d\n",
iEv,i,fInputAOD[iEv]->GetTrack(i),fInputAOD[iEv]->GetTrack(i)->Pt(),
fInputAOD[iEv]->GetTrack(i)->GetUniqueID());
if (muonCounter[0]==rndMuonTrack[0]) {
fOutputUserAOD->AddTrack((AliAODTrack*)fInputAOD[iEv]->GetTrack(i));
nFWMUonsAdded++;
if (fInputAOD[iEv]->GetTrack(i)->Charge()>0) nPosTracksAdded++;
else nNegTracksAdded++;
}
muonCounter[0]++;
}
}
for (Int_t i=0; i<nTracksEv[1]; i++) {
if(((AliAODTrack*)fInputAOD[jEv]->GetTrack(i))->IsMuonTrack()) {
if (fDebug) printf("fInputAOD[%d]->GetTrack(%d) = %p pt = %f uniqueID = %d\n",
jEv,i,fInputAOD[jEv]->GetTrack(i),fInputAOD[jEv]->GetTrack(i)->Pt(),
fInputAOD[jEv]->GetTrack(i)->GetUniqueID());
if (muonCounter[1]==rndMuonTrack[1]) {
fOutputUserAOD->AddTrack((AliAODTrack*)fInputAOD[jEv]->GetTrack(i));
nFWMUonsAdded++;
if (fInputAOD[jEv]->GetTrack(i)->Charge()>0) nPosTracksAdded++;
else nNegTracksAdded++;
}
muonCounter[1]++;
}
}
fOutputUserAOD->AddVertex(vertex);
if (fDebug) {
for (Int_t i=0; i<nFWMUonsAdded; i++) {
AliAODTrack *tr = dynamic_cast<AliAODTrack*>( fOutputUserAOD->GetTrack(i));
if(!tr) AliFatal("Not a standard AOD");
printf("fOutputUserAOD->GetTrack(%d) = %p pt = %f\n",i,tr,tr->Pt());
}
}
AliAODHeader * header = dynamic_cast<AliAODHeader*>(fOutputUserAOD->GetHeader());
if(!header) AliFatal("Not a standard AOD");
header->SetRefMultiplicity(nFWMUonsAdded);
header->SetRefMultiplicityPos(nPosTracksAdded);
header->SetRefMultiplicityNeg(nNegTracksAdded);
fOutputUserHandler -> FinishEvent();
}
PostData(1, fOutputUserAODTree);
}
}
}
void AliAnalysisTaskCreateMixedDimuons::Terminate(Option_t *) {
printf("\n\nCalling TERMINATE \n\n\n");
fOutputUserHandler -> Terminate();
}
AliAnalysisTaskCreateMixedDimuons.cxx:1 AliAnalysisTaskCreateMixedDimuons.cxx:2 AliAnalysisTaskCreateMixedDimuons.cxx:3 AliAnalysisTaskCreateMixedDimuons.cxx:4 AliAnalysisTaskCreateMixedDimuons.cxx:5 AliAnalysisTaskCreateMixedDimuons.cxx:6 AliAnalysisTaskCreateMixedDimuons.cxx:7 AliAnalysisTaskCreateMixedDimuons.cxx:8 AliAnalysisTaskCreateMixedDimuons.cxx:9 AliAnalysisTaskCreateMixedDimuons.cxx:10 AliAnalysisTaskCreateMixedDimuons.cxx:11 AliAnalysisTaskCreateMixedDimuons.cxx:12 AliAnalysisTaskCreateMixedDimuons.cxx:13 AliAnalysisTaskCreateMixedDimuons.cxx:14 AliAnalysisTaskCreateMixedDimuons.cxx:15 AliAnalysisTaskCreateMixedDimuons.cxx:16 AliAnalysisTaskCreateMixedDimuons.cxx:17 AliAnalysisTaskCreateMixedDimuons.cxx:18 AliAnalysisTaskCreateMixedDimuons.cxx:19 AliAnalysisTaskCreateMixedDimuons.cxx:20 AliAnalysisTaskCreateMixedDimuons.cxx:21 AliAnalysisTaskCreateMixedDimuons.cxx:22 AliAnalysisTaskCreateMixedDimuons.cxx:23 AliAnalysisTaskCreateMixedDimuons.cxx:24 AliAnalysisTaskCreateMixedDimuons.cxx:25 AliAnalysisTaskCreateMixedDimuons.cxx:26 AliAnalysisTaskCreateMixedDimuons.cxx:27 AliAnalysisTaskCreateMixedDimuons.cxx:28 AliAnalysisTaskCreateMixedDimuons.cxx:29 AliAnalysisTaskCreateMixedDimuons.cxx:30 AliAnalysisTaskCreateMixedDimuons.cxx:31 AliAnalysisTaskCreateMixedDimuons.cxx:32 AliAnalysisTaskCreateMixedDimuons.cxx:33 AliAnalysisTaskCreateMixedDimuons.cxx:34 AliAnalysisTaskCreateMixedDimuons.cxx:35 AliAnalysisTaskCreateMixedDimuons.cxx:36 AliAnalysisTaskCreateMixedDimuons.cxx:37 AliAnalysisTaskCreateMixedDimuons.cxx:38 AliAnalysisTaskCreateMixedDimuons.cxx:39 AliAnalysisTaskCreateMixedDimuons.cxx:40 AliAnalysisTaskCreateMixedDimuons.cxx:41 AliAnalysisTaskCreateMixedDimuons.cxx:42 AliAnalysisTaskCreateMixedDimuons.cxx:43 AliAnalysisTaskCreateMixedDimuons.cxx:44 AliAnalysisTaskCreateMixedDimuons.cxx:45 AliAnalysisTaskCreateMixedDimuons.cxx:46 AliAnalysisTaskCreateMixedDimuons.cxx:47 AliAnalysisTaskCreateMixedDimuons.cxx:48 AliAnalysisTaskCreateMixedDimuons.cxx:49 AliAnalysisTaskCreateMixedDimuons.cxx:50 AliAnalysisTaskCreateMixedDimuons.cxx:51 AliAnalysisTaskCreateMixedDimuons.cxx:52 AliAnalysisTaskCreateMixedDimuons.cxx:53 AliAnalysisTaskCreateMixedDimuons.cxx:54 AliAnalysisTaskCreateMixedDimuons.cxx:55 AliAnalysisTaskCreateMixedDimuons.cxx:56 AliAnalysisTaskCreateMixedDimuons.cxx:57 AliAnalysisTaskCreateMixedDimuons.cxx:58 AliAnalysisTaskCreateMixedDimuons.cxx:59 AliAnalysisTaskCreateMixedDimuons.cxx:60 AliAnalysisTaskCreateMixedDimuons.cxx:61 AliAnalysisTaskCreateMixedDimuons.cxx:62 AliAnalysisTaskCreateMixedDimuons.cxx:63 AliAnalysisTaskCreateMixedDimuons.cxx:64 AliAnalysisTaskCreateMixedDimuons.cxx:65 AliAnalysisTaskCreateMixedDimuons.cxx:66 AliAnalysisTaskCreateMixedDimuons.cxx:67 AliAnalysisTaskCreateMixedDimuons.cxx:68 AliAnalysisTaskCreateMixedDimuons.cxx:69 AliAnalysisTaskCreateMixedDimuons.cxx:70 AliAnalysisTaskCreateMixedDimuons.cxx:71 AliAnalysisTaskCreateMixedDimuons.cxx:72 AliAnalysisTaskCreateMixedDimuons.cxx:73 AliAnalysisTaskCreateMixedDimuons.cxx:74 AliAnalysisTaskCreateMixedDimuons.cxx:75 AliAnalysisTaskCreateMixedDimuons.cxx:76 AliAnalysisTaskCreateMixedDimuons.cxx:77 AliAnalysisTaskCreateMixedDimuons.cxx:78 AliAnalysisTaskCreateMixedDimuons.cxx:79 AliAnalysisTaskCreateMixedDimuons.cxx:80 AliAnalysisTaskCreateMixedDimuons.cxx:81 AliAnalysisTaskCreateMixedDimuons.cxx:82 AliAnalysisTaskCreateMixedDimuons.cxx:83 AliAnalysisTaskCreateMixedDimuons.cxx:84 AliAnalysisTaskCreateMixedDimuons.cxx:85 AliAnalysisTaskCreateMixedDimuons.cxx:86 AliAnalysisTaskCreateMixedDimuons.cxx:87 AliAnalysisTaskCreateMixedDimuons.cxx:88 AliAnalysisTaskCreateMixedDimuons.cxx:89 AliAnalysisTaskCreateMixedDimuons.cxx:90 AliAnalysisTaskCreateMixedDimuons.cxx:91 AliAnalysisTaskCreateMixedDimuons.cxx:92 AliAnalysisTaskCreateMixedDimuons.cxx:93 AliAnalysisTaskCreateMixedDimuons.cxx:94 AliAnalysisTaskCreateMixedDimuons.cxx:95 AliAnalysisTaskCreateMixedDimuons.cxx:96 AliAnalysisTaskCreateMixedDimuons.cxx:97 AliAnalysisTaskCreateMixedDimuons.cxx:98 AliAnalysisTaskCreateMixedDimuons.cxx:99 AliAnalysisTaskCreateMixedDimuons.cxx:100 AliAnalysisTaskCreateMixedDimuons.cxx:101 AliAnalysisTaskCreateMixedDimuons.cxx:102 AliAnalysisTaskCreateMixedDimuons.cxx:103 AliAnalysisTaskCreateMixedDimuons.cxx:104 AliAnalysisTaskCreateMixedDimuons.cxx:105 AliAnalysisTaskCreateMixedDimuons.cxx:106 AliAnalysisTaskCreateMixedDimuons.cxx:107 AliAnalysisTaskCreateMixedDimuons.cxx:108 AliAnalysisTaskCreateMixedDimuons.cxx:109 AliAnalysisTaskCreateMixedDimuons.cxx:110 AliAnalysisTaskCreateMixedDimuons.cxx:111 AliAnalysisTaskCreateMixedDimuons.cxx:112 AliAnalysisTaskCreateMixedDimuons.cxx:113 AliAnalysisTaskCreateMixedDimuons.cxx:114 AliAnalysisTaskCreateMixedDimuons.cxx:115 AliAnalysisTaskCreateMixedDimuons.cxx:116 AliAnalysisTaskCreateMixedDimuons.cxx:117 AliAnalysisTaskCreateMixedDimuons.cxx:118 AliAnalysisTaskCreateMixedDimuons.cxx:119 AliAnalysisTaskCreateMixedDimuons.cxx:120 AliAnalysisTaskCreateMixedDimuons.cxx:121 AliAnalysisTaskCreateMixedDimuons.cxx:122 AliAnalysisTaskCreateMixedDimuons.cxx:123 AliAnalysisTaskCreateMixedDimuons.cxx:124 AliAnalysisTaskCreateMixedDimuons.cxx:125 AliAnalysisTaskCreateMixedDimuons.cxx:126 AliAnalysisTaskCreateMixedDimuons.cxx:127 AliAnalysisTaskCreateMixedDimuons.cxx:128 AliAnalysisTaskCreateMixedDimuons.cxx:129 AliAnalysisTaskCreateMixedDimuons.cxx:130 AliAnalysisTaskCreateMixedDimuons.cxx:131 AliAnalysisTaskCreateMixedDimuons.cxx:132 AliAnalysisTaskCreateMixedDimuons.cxx:133 AliAnalysisTaskCreateMixedDimuons.cxx:134 AliAnalysisTaskCreateMixedDimuons.cxx:135 AliAnalysisTaskCreateMixedDimuons.cxx:136 AliAnalysisTaskCreateMixedDimuons.cxx:137 AliAnalysisTaskCreateMixedDimuons.cxx:138 AliAnalysisTaskCreateMixedDimuons.cxx:139 AliAnalysisTaskCreateMixedDimuons.cxx:140 AliAnalysisTaskCreateMixedDimuons.cxx:141 AliAnalysisTaskCreateMixedDimuons.cxx:142 AliAnalysisTaskCreateMixedDimuons.cxx:143 AliAnalysisTaskCreateMixedDimuons.cxx:144 AliAnalysisTaskCreateMixedDimuons.cxx:145 AliAnalysisTaskCreateMixedDimuons.cxx:146 AliAnalysisTaskCreateMixedDimuons.cxx:147 AliAnalysisTaskCreateMixedDimuons.cxx:148 AliAnalysisTaskCreateMixedDimuons.cxx:149 AliAnalysisTaskCreateMixedDimuons.cxx:150 AliAnalysisTaskCreateMixedDimuons.cxx:151 AliAnalysisTaskCreateMixedDimuons.cxx:152 AliAnalysisTaskCreateMixedDimuons.cxx:153 AliAnalysisTaskCreateMixedDimuons.cxx:154 AliAnalysisTaskCreateMixedDimuons.cxx:155 AliAnalysisTaskCreateMixedDimuons.cxx:156 AliAnalysisTaskCreateMixedDimuons.cxx:157 AliAnalysisTaskCreateMixedDimuons.cxx:158 AliAnalysisTaskCreateMixedDimuons.cxx:159 AliAnalysisTaskCreateMixedDimuons.cxx:160 AliAnalysisTaskCreateMixedDimuons.cxx:161 AliAnalysisTaskCreateMixedDimuons.cxx:162 AliAnalysisTaskCreateMixedDimuons.cxx:163 AliAnalysisTaskCreateMixedDimuons.cxx:164 AliAnalysisTaskCreateMixedDimuons.cxx:165 AliAnalysisTaskCreateMixedDimuons.cxx:166 AliAnalysisTaskCreateMixedDimuons.cxx:167 AliAnalysisTaskCreateMixedDimuons.cxx:168 AliAnalysisTaskCreateMixedDimuons.cxx:169 AliAnalysisTaskCreateMixedDimuons.cxx:170 AliAnalysisTaskCreateMixedDimuons.cxx:171 AliAnalysisTaskCreateMixedDimuons.cxx:172 AliAnalysisTaskCreateMixedDimuons.cxx:173 AliAnalysisTaskCreateMixedDimuons.cxx:174 AliAnalysisTaskCreateMixedDimuons.cxx:175 AliAnalysisTaskCreateMixedDimuons.cxx:176 AliAnalysisTaskCreateMixedDimuons.cxx:177 AliAnalysisTaskCreateMixedDimuons.cxx:178 AliAnalysisTaskCreateMixedDimuons.cxx:179 AliAnalysisTaskCreateMixedDimuons.cxx:180 AliAnalysisTaskCreateMixedDimuons.cxx:181 AliAnalysisTaskCreateMixedDimuons.cxx:182 AliAnalysisTaskCreateMixedDimuons.cxx:183 AliAnalysisTaskCreateMixedDimuons.cxx:184 AliAnalysisTaskCreateMixedDimuons.cxx:185 AliAnalysisTaskCreateMixedDimuons.cxx:186 AliAnalysisTaskCreateMixedDimuons.cxx:187 AliAnalysisTaskCreateMixedDimuons.cxx:188 AliAnalysisTaskCreateMixedDimuons.cxx:189 AliAnalysisTaskCreateMixedDimuons.cxx:190 AliAnalysisTaskCreateMixedDimuons.cxx:191 AliAnalysisTaskCreateMixedDimuons.cxx:192 AliAnalysisTaskCreateMixedDimuons.cxx:193 AliAnalysisTaskCreateMixedDimuons.cxx:194 AliAnalysisTaskCreateMixedDimuons.cxx:195 AliAnalysisTaskCreateMixedDimuons.cxx:196 AliAnalysisTaskCreateMixedDimuons.cxx:197 AliAnalysisTaskCreateMixedDimuons.cxx:198 AliAnalysisTaskCreateMixedDimuons.cxx:199 AliAnalysisTaskCreateMixedDimuons.cxx:200 AliAnalysisTaskCreateMixedDimuons.cxx:201 AliAnalysisTaskCreateMixedDimuons.cxx:202 AliAnalysisTaskCreateMixedDimuons.cxx:203 AliAnalysisTaskCreateMixedDimuons.cxx:204 AliAnalysisTaskCreateMixedDimuons.cxx:205 AliAnalysisTaskCreateMixedDimuons.cxx:206 AliAnalysisTaskCreateMixedDimuons.cxx:207 AliAnalysisTaskCreateMixedDimuons.cxx:208 AliAnalysisTaskCreateMixedDimuons.cxx:209 AliAnalysisTaskCreateMixedDimuons.cxx:210 AliAnalysisTaskCreateMixedDimuons.cxx:211 AliAnalysisTaskCreateMixedDimuons.cxx:212 AliAnalysisTaskCreateMixedDimuons.cxx:213 AliAnalysisTaskCreateMixedDimuons.cxx:214 AliAnalysisTaskCreateMixedDimuons.cxx:215 AliAnalysisTaskCreateMixedDimuons.cxx:216 AliAnalysisTaskCreateMixedDimuons.cxx:217 AliAnalysisTaskCreateMixedDimuons.cxx:218 AliAnalysisTaskCreateMixedDimuons.cxx:219 AliAnalysisTaskCreateMixedDimuons.cxx:220 AliAnalysisTaskCreateMixedDimuons.cxx:221 AliAnalysisTaskCreateMixedDimuons.cxx:222 AliAnalysisTaskCreateMixedDimuons.cxx:223 AliAnalysisTaskCreateMixedDimuons.cxx:224 AliAnalysisTaskCreateMixedDimuons.cxx:225 AliAnalysisTaskCreateMixedDimuons.cxx:226 AliAnalysisTaskCreateMixedDimuons.cxx:227 AliAnalysisTaskCreateMixedDimuons.cxx:228 AliAnalysisTaskCreateMixedDimuons.cxx:229 AliAnalysisTaskCreateMixedDimuons.cxx:230 AliAnalysisTaskCreateMixedDimuons.cxx:231 AliAnalysisTaskCreateMixedDimuons.cxx:232 AliAnalysisTaskCreateMixedDimuons.cxx:233 AliAnalysisTaskCreateMixedDimuons.cxx:234 AliAnalysisTaskCreateMixedDimuons.cxx:235 AliAnalysisTaskCreateMixedDimuons.cxx:236