#define AliAnalysisTaskMuonAODfromGeneral_cxx
#include "TTree.h"
#include "TROOT.h"
#include "TH1.h"
#include "TCanvas.h"
#include "TSystem.h"
#include "TRandom.h"
#include "AliAODEvent.h"
#include "AliAnalysisTask.h"
#include "AliAnalysisTaskMuonAODfromGeneral.h"
#include "AliAODHandler.h"
#include "AliAnalysisManager.h"
#include "AliAODEventInfo.h"
#include "AliAODDimuon.h"
ClassImp(AliAnalysisTaskMuonAODfromGeneral)
AliAnalysisTaskMuonAODfromGeneral::AliAnalysisTaskMuonAODfromGeneral(const char *name, Double_t BeamEnergy):
AliAnalysisTask(name, "AnalysisTaskMuonAODfromGeneral"),
fInfos(0),
fDimuons(0),
fChain(0),
fOrgAOD(0),
fNewAOD(0),
ft(0),
fBeamEnergy(0)
{
SetBeamEnergy(BeamEnergy);
DefineInput(0, TChain::Class());
DefineOutput(0, TTree::Class());
}
void AliAnalysisTaskMuonAODfromGeneral::ConnectInputData(Option_t *) {
printf(" ConnectInputData %s\n", GetName());
fChain = (TChain*)GetInputData(0);
fOrgAOD = new AliAODEvent();
fOrgAOD->ReadFromTree(fChain);
}
void AliAnalysisTaskMuonAODfromGeneral::CreateOutputObjects() {
printf("Creating output objects\n");
if(!fNewAOD)fNewAOD=new AliAODEvent();
fNewAOD->CreateStdContent();
if (!ft) {
ft = new TTree("AOD","Muon AOD tree",0);
ft->BranchRef();
ft->Branch(fNewAOD->GetList());
}
fInfos = new AliAODEventInfo();
fNewAOD->AddObject(fInfos);
const char *nameInfos = "MuonInfos";
fInfos->SetName(nameInfos);
ft->Branch(nameInfos, &fInfos);
fDimuons = new TClonesArray("AliAODDimuon",0);
fNewAOD->AddObject(fDimuons);
const char *nameDimuons = "Dimuons";
fDimuons->SetName(nameDimuons);
ft->Branch(nameDimuons, &fDimuons);
}
void AliAnalysisTaskMuonAODfromGeneral::Exec(Option_t *) {
static int ncall=0;
TChain *chain = (TChain*)GetInputData(0);
Long64_t ientry = chain->GetReadEntry();
ientry=ientry;
if (!fOrgAOD) return;
Int_t nTracks=fOrgAOD->GetNumberOfTracks();
Int_t nMuTracks=0;
Int_t nPosTracks = 0;
Int_t mutrNumb[10]; for (Int_t i=0; i<10; mutrNumb[i++]=0) {}
for (Int_t iTrack=0; iTrack<nTracks; iTrack++){
const Double_t *trackpid=fOrgAOD->GetTrack(iTrack)->PID();
if (trackpid[AliAODTrack::kMuon]==1.) {
mutrNumb[nMuTracks]=iTrack;
nMuTracks++;
}
if (fOrgAOD->GetTrack(iTrack)->Charge()> 0) nPosTracks++;
}
Bool_t ExistMuon=kFALSE;
if (nMuTracks>0) ExistMuon=kTRUE;
Double_t pos[3];
Double_t covVtx[6];
AliAODHeader *header = dynamic_cast<AliAODHeader*>(fNewAOD->GetHeader());
if(!header) AliFatal("Not a standard AOD");
header->SetRunNumber (fOrgAOD->GetRunNumber() );
header->SetBunchCrossNumber(fOrgAOD->GetBunchCrossNumber());
header->SetOrbitNumber (fOrgAOD->GetOrbitNumber() );
header->SetPeriodNumber (fOrgAOD->GetPeriodNumber() );
header->SetTriggerMask (fOrgAOD->GetTriggerMask() );
header->SetTriggerCluster (fOrgAOD->GetTriggerCluster() );
header->SetEventType (fOrgAOD->GetEventType() );
header->SetMagneticField (fOrgAOD->GetMagneticField() );
header->SetZDCN1Energy (fOrgAOD->GetZDCN1Energy() );
header->SetZDCP1Energy (fOrgAOD->GetZDCP1Energy() );
header->SetZDCN2Energy (fOrgAOD->GetZDCN2Energy() );
header->SetZDCP2Energy (fOrgAOD->GetZDCP2Energy() );
header->SetZDCEMEnergy (0,fOrgAOD->GetZDCEMEnergy(0) );
header->SetZDCEMEnergy (1,fOrgAOD->GetZDCEMEnergy(1) );
header->SetRefMultiplicity (nTracks);
header->SetRefMultiplicityPos(nPosTracks);
header->SetRefMultiplicityNeg(nTracks - nPosTracks);
header->SetMuonMagFieldScale(-999.);
header->SetCentrality(0);
const AliAODVertex *vtx = fOrgAOD->GetPrimaryVertex();
if ( !vtx) {
AliError("Primary vertex is not defined");
return;
}
Int_t nDimuons=nMuTracks*(nMuTracks-1)/2;
TClonesArray &vertices = *(fNewAOD->GetVertices());
Int_t jVertices=0;
TClonesArray &tracks = *(fNewAOD->GetTracks());
tracks.Delete();
Int_t jTracks=0;
vtx->GetCovMatrix(covVtx);
AliAODVertex * primary = new(vertices[jVertices++])
AliAODVertex(pos, covVtx, vtx->GetChi2perNDF(), NULL, AliAODVertex::kPrimary);
static int ncal=0;
static int numtracks=0;
for (Int_t iTrack=0; iTrack<nMuTracks; iTrack++) {
AliAODTrack * track = dynamic_cast<AliAODTrack*>((fOrgAOD->GetTrack(mutrNumb[iTrack])));
if(!track) AliFatal("Not a standard AOD");
primary->AddDaughter(new(tracks[jTracks++])
AliAODTrack((*track)));
ncal++;
}
numtracks+=jTracks;
fDimuons->Delete();
fDimuons->Expand(nDimuons);
TClonesArray &rDimuons = *fDimuons;
Int_t jDimuons=0;
for(Int_t i=0; i<nMuTracks; i++){
for(Int_t j=i+1; j<nMuTracks; j++){
new(rDimuons[jDimuons++]) AliAODDimuon(tracks[i],tracks[j]);
}
}
fInfos->SetBeamEnergy(fBeamEnergy);
fInfos->SetEv(fNewAOD);
fInfos->SetHe(header);
fInfos->SetTr(fNewAOD->GetTracks());
fInfos->SetDi(fDimuons);
fInfos->SelectTriggerBits(0,1,2,3,4,5);
if(ExistMuon) ft->Fill();
ncall++;
PostData(0, ft);
}
void AliAnalysisTaskMuonAODfromGeneral::Terminate(Option_t *) {
ft->GetUserInfo()->Add(fNewAOD);
ft->Write("",TObject::kOverwrite);
ft->ResetBranchAddresses();
if (!gROOT->IsBatch()) {
TCanvas *c1 = new TCanvas("c1","Pt",10,10,310,310);
c1->SetFillColor(10);
c1->SetHighLightColor(10);
c1->cd(1)->SetLeftMargin(0.15);
c1->cd(1)->SetBottomMargin(0.15);
c1->cd(1)->SetLogy();
ft->Draw("tracks.Pt()");
}
}
AliAnalysisTaskMuonAODfromGeneral.cxx:1 AliAnalysisTaskMuonAODfromGeneral.cxx:2 AliAnalysisTaskMuonAODfromGeneral.cxx:3 AliAnalysisTaskMuonAODfromGeneral.cxx:4 AliAnalysisTaskMuonAODfromGeneral.cxx:5 AliAnalysisTaskMuonAODfromGeneral.cxx:6 AliAnalysisTaskMuonAODfromGeneral.cxx:7 AliAnalysisTaskMuonAODfromGeneral.cxx:8 AliAnalysisTaskMuonAODfromGeneral.cxx:9 AliAnalysisTaskMuonAODfromGeneral.cxx:10 AliAnalysisTaskMuonAODfromGeneral.cxx:11 AliAnalysisTaskMuonAODfromGeneral.cxx:12 AliAnalysisTaskMuonAODfromGeneral.cxx:13 AliAnalysisTaskMuonAODfromGeneral.cxx:14 AliAnalysisTaskMuonAODfromGeneral.cxx:15 AliAnalysisTaskMuonAODfromGeneral.cxx:16 AliAnalysisTaskMuonAODfromGeneral.cxx:17 AliAnalysisTaskMuonAODfromGeneral.cxx:18 AliAnalysisTaskMuonAODfromGeneral.cxx:19 AliAnalysisTaskMuonAODfromGeneral.cxx:20 AliAnalysisTaskMuonAODfromGeneral.cxx:21 AliAnalysisTaskMuonAODfromGeneral.cxx:22 AliAnalysisTaskMuonAODfromGeneral.cxx:23 AliAnalysisTaskMuonAODfromGeneral.cxx:24 AliAnalysisTaskMuonAODfromGeneral.cxx:25 AliAnalysisTaskMuonAODfromGeneral.cxx:26 AliAnalysisTaskMuonAODfromGeneral.cxx:27 AliAnalysisTaskMuonAODfromGeneral.cxx:28 AliAnalysisTaskMuonAODfromGeneral.cxx:29 AliAnalysisTaskMuonAODfromGeneral.cxx:30 AliAnalysisTaskMuonAODfromGeneral.cxx:31 AliAnalysisTaskMuonAODfromGeneral.cxx:32 AliAnalysisTaskMuonAODfromGeneral.cxx:33 AliAnalysisTaskMuonAODfromGeneral.cxx:34 AliAnalysisTaskMuonAODfromGeneral.cxx:35 AliAnalysisTaskMuonAODfromGeneral.cxx:36 AliAnalysisTaskMuonAODfromGeneral.cxx:37 AliAnalysisTaskMuonAODfromGeneral.cxx:38 AliAnalysisTaskMuonAODfromGeneral.cxx:39 AliAnalysisTaskMuonAODfromGeneral.cxx:40 AliAnalysisTaskMuonAODfromGeneral.cxx:41 AliAnalysisTaskMuonAODfromGeneral.cxx:42 AliAnalysisTaskMuonAODfromGeneral.cxx:43 AliAnalysisTaskMuonAODfromGeneral.cxx:44 AliAnalysisTaskMuonAODfromGeneral.cxx:45 AliAnalysisTaskMuonAODfromGeneral.cxx:46 AliAnalysisTaskMuonAODfromGeneral.cxx:47 AliAnalysisTaskMuonAODfromGeneral.cxx:48 AliAnalysisTaskMuonAODfromGeneral.cxx:49 AliAnalysisTaskMuonAODfromGeneral.cxx:50 AliAnalysisTaskMuonAODfromGeneral.cxx:51 AliAnalysisTaskMuonAODfromGeneral.cxx:52 AliAnalysisTaskMuonAODfromGeneral.cxx:53 AliAnalysisTaskMuonAODfromGeneral.cxx:54 AliAnalysisTaskMuonAODfromGeneral.cxx:55 AliAnalysisTaskMuonAODfromGeneral.cxx:56 AliAnalysisTaskMuonAODfromGeneral.cxx:57 AliAnalysisTaskMuonAODfromGeneral.cxx:58 AliAnalysisTaskMuonAODfromGeneral.cxx:59 AliAnalysisTaskMuonAODfromGeneral.cxx:60 AliAnalysisTaskMuonAODfromGeneral.cxx:61 AliAnalysisTaskMuonAODfromGeneral.cxx:62 AliAnalysisTaskMuonAODfromGeneral.cxx:63 AliAnalysisTaskMuonAODfromGeneral.cxx:64 AliAnalysisTaskMuonAODfromGeneral.cxx:65 AliAnalysisTaskMuonAODfromGeneral.cxx:66 AliAnalysisTaskMuonAODfromGeneral.cxx:67 AliAnalysisTaskMuonAODfromGeneral.cxx:68 AliAnalysisTaskMuonAODfromGeneral.cxx:69 AliAnalysisTaskMuonAODfromGeneral.cxx:70 AliAnalysisTaskMuonAODfromGeneral.cxx:71 AliAnalysisTaskMuonAODfromGeneral.cxx:72 AliAnalysisTaskMuonAODfromGeneral.cxx:73 AliAnalysisTaskMuonAODfromGeneral.cxx:74 AliAnalysisTaskMuonAODfromGeneral.cxx:75 AliAnalysisTaskMuonAODfromGeneral.cxx:76 AliAnalysisTaskMuonAODfromGeneral.cxx:77 AliAnalysisTaskMuonAODfromGeneral.cxx:78 AliAnalysisTaskMuonAODfromGeneral.cxx:79 AliAnalysisTaskMuonAODfromGeneral.cxx:80 AliAnalysisTaskMuonAODfromGeneral.cxx:81 AliAnalysisTaskMuonAODfromGeneral.cxx:82 AliAnalysisTaskMuonAODfromGeneral.cxx:83 AliAnalysisTaskMuonAODfromGeneral.cxx:84 AliAnalysisTaskMuonAODfromGeneral.cxx:85 AliAnalysisTaskMuonAODfromGeneral.cxx:86 AliAnalysisTaskMuonAODfromGeneral.cxx:87 AliAnalysisTaskMuonAODfromGeneral.cxx:88 AliAnalysisTaskMuonAODfromGeneral.cxx:89 AliAnalysisTaskMuonAODfromGeneral.cxx:90 AliAnalysisTaskMuonAODfromGeneral.cxx:91 AliAnalysisTaskMuonAODfromGeneral.cxx:92 AliAnalysisTaskMuonAODfromGeneral.cxx:93 AliAnalysisTaskMuonAODfromGeneral.cxx:94 AliAnalysisTaskMuonAODfromGeneral.cxx:95 AliAnalysisTaskMuonAODfromGeneral.cxx:96 AliAnalysisTaskMuonAODfromGeneral.cxx:97 AliAnalysisTaskMuonAODfromGeneral.cxx:98 AliAnalysisTaskMuonAODfromGeneral.cxx:99 AliAnalysisTaskMuonAODfromGeneral.cxx:100 AliAnalysisTaskMuonAODfromGeneral.cxx:101 AliAnalysisTaskMuonAODfromGeneral.cxx:102 AliAnalysisTaskMuonAODfromGeneral.cxx:103 AliAnalysisTaskMuonAODfromGeneral.cxx:104 AliAnalysisTaskMuonAODfromGeneral.cxx:105 AliAnalysisTaskMuonAODfromGeneral.cxx:106 AliAnalysisTaskMuonAODfromGeneral.cxx:107 AliAnalysisTaskMuonAODfromGeneral.cxx:108 AliAnalysisTaskMuonAODfromGeneral.cxx:109 AliAnalysisTaskMuonAODfromGeneral.cxx:110 AliAnalysisTaskMuonAODfromGeneral.cxx:111 AliAnalysisTaskMuonAODfromGeneral.cxx:112 AliAnalysisTaskMuonAODfromGeneral.cxx:113 AliAnalysisTaskMuonAODfromGeneral.cxx:114 AliAnalysisTaskMuonAODfromGeneral.cxx:115 AliAnalysisTaskMuonAODfromGeneral.cxx:116 AliAnalysisTaskMuonAODfromGeneral.cxx:117 AliAnalysisTaskMuonAODfromGeneral.cxx:118 AliAnalysisTaskMuonAODfromGeneral.cxx:119 AliAnalysisTaskMuonAODfromGeneral.cxx:120 AliAnalysisTaskMuonAODfromGeneral.cxx:121 AliAnalysisTaskMuonAODfromGeneral.cxx:122 AliAnalysisTaskMuonAODfromGeneral.cxx:123 AliAnalysisTaskMuonAODfromGeneral.cxx:124 AliAnalysisTaskMuonAODfromGeneral.cxx:125 AliAnalysisTaskMuonAODfromGeneral.cxx:126 AliAnalysisTaskMuonAODfromGeneral.cxx:127 AliAnalysisTaskMuonAODfromGeneral.cxx:128 AliAnalysisTaskMuonAODfromGeneral.cxx:129 AliAnalysisTaskMuonAODfromGeneral.cxx:130 AliAnalysisTaskMuonAODfromGeneral.cxx:131 AliAnalysisTaskMuonAODfromGeneral.cxx:132 AliAnalysisTaskMuonAODfromGeneral.cxx:133 AliAnalysisTaskMuonAODfromGeneral.cxx:134 AliAnalysisTaskMuonAODfromGeneral.cxx:135 AliAnalysisTaskMuonAODfromGeneral.cxx:136 AliAnalysisTaskMuonAODfromGeneral.cxx:137 AliAnalysisTaskMuonAODfromGeneral.cxx:138 AliAnalysisTaskMuonAODfromGeneral.cxx:139 AliAnalysisTaskMuonAODfromGeneral.cxx:140 AliAnalysisTaskMuonAODfromGeneral.cxx:141 AliAnalysisTaskMuonAODfromGeneral.cxx:142 AliAnalysisTaskMuonAODfromGeneral.cxx:143 AliAnalysisTaskMuonAODfromGeneral.cxx:144 AliAnalysisTaskMuonAODfromGeneral.cxx:145 AliAnalysisTaskMuonAODfromGeneral.cxx:146 AliAnalysisTaskMuonAODfromGeneral.cxx:147 AliAnalysisTaskMuonAODfromGeneral.cxx:148 AliAnalysisTaskMuonAODfromGeneral.cxx:149 AliAnalysisTaskMuonAODfromGeneral.cxx:150 AliAnalysisTaskMuonAODfromGeneral.cxx:151 AliAnalysisTaskMuonAODfromGeneral.cxx:152 AliAnalysisTaskMuonAODfromGeneral.cxx:153 AliAnalysisTaskMuonAODfromGeneral.cxx:154 AliAnalysisTaskMuonAODfromGeneral.cxx:155 AliAnalysisTaskMuonAODfromGeneral.cxx:156 AliAnalysisTaskMuonAODfromGeneral.cxx:157 AliAnalysisTaskMuonAODfromGeneral.cxx:158 AliAnalysisTaskMuonAODfromGeneral.cxx:159 AliAnalysisTaskMuonAODfromGeneral.cxx:160 AliAnalysisTaskMuonAODfromGeneral.cxx:161 AliAnalysisTaskMuonAODfromGeneral.cxx:162 AliAnalysisTaskMuonAODfromGeneral.cxx:163 AliAnalysisTaskMuonAODfromGeneral.cxx:164 AliAnalysisTaskMuonAODfromGeneral.cxx:165 AliAnalysisTaskMuonAODfromGeneral.cxx:166 AliAnalysisTaskMuonAODfromGeneral.cxx:167 AliAnalysisTaskMuonAODfromGeneral.cxx:168 AliAnalysisTaskMuonAODfromGeneral.cxx:169 AliAnalysisTaskMuonAODfromGeneral.cxx:170 AliAnalysisTaskMuonAODfromGeneral.cxx:171 AliAnalysisTaskMuonAODfromGeneral.cxx:172 AliAnalysisTaskMuonAODfromGeneral.cxx:173 AliAnalysisTaskMuonAODfromGeneral.cxx:174 AliAnalysisTaskMuonAODfromGeneral.cxx:175 AliAnalysisTaskMuonAODfromGeneral.cxx:176 AliAnalysisTaskMuonAODfromGeneral.cxx:177 AliAnalysisTaskMuonAODfromGeneral.cxx:178 AliAnalysisTaskMuonAODfromGeneral.cxx:179 AliAnalysisTaskMuonAODfromGeneral.cxx:180 AliAnalysisTaskMuonAODfromGeneral.cxx:181 AliAnalysisTaskMuonAODfromGeneral.cxx:182 AliAnalysisTaskMuonAODfromGeneral.cxx:183 AliAnalysisTaskMuonAODfromGeneral.cxx:184 AliAnalysisTaskMuonAODfromGeneral.cxx:185 AliAnalysisTaskMuonAODfromGeneral.cxx:186 AliAnalysisTaskMuonAODfromGeneral.cxx:187 AliAnalysisTaskMuonAODfromGeneral.cxx:188 AliAnalysisTaskMuonAODfromGeneral.cxx:189 AliAnalysisTaskMuonAODfromGeneral.cxx:190 AliAnalysisTaskMuonAODfromGeneral.cxx:191 AliAnalysisTaskMuonAODfromGeneral.cxx:192 AliAnalysisTaskMuonAODfromGeneral.cxx:193 AliAnalysisTaskMuonAODfromGeneral.cxx:194 AliAnalysisTaskMuonAODfromGeneral.cxx:195 AliAnalysisTaskMuonAODfromGeneral.cxx:196 AliAnalysisTaskMuonAODfromGeneral.cxx:197 AliAnalysisTaskMuonAODfromGeneral.cxx:198 AliAnalysisTaskMuonAODfromGeneral.cxx:199 AliAnalysisTaskMuonAODfromGeneral.cxx:200 AliAnalysisTaskMuonAODfromGeneral.cxx:201 AliAnalysisTaskMuonAODfromGeneral.cxx:202 AliAnalysisTaskMuonAODfromGeneral.cxx:203 AliAnalysisTaskMuonAODfromGeneral.cxx:204 AliAnalysisTaskMuonAODfromGeneral.cxx:205 AliAnalysisTaskMuonAODfromGeneral.cxx:206 AliAnalysisTaskMuonAODfromGeneral.cxx:207 AliAnalysisTaskMuonAODfromGeneral.cxx:208 AliAnalysisTaskMuonAODfromGeneral.cxx:209 AliAnalysisTaskMuonAODfromGeneral.cxx:210 AliAnalysisTaskMuonAODfromGeneral.cxx:211 AliAnalysisTaskMuonAODfromGeneral.cxx:212 AliAnalysisTaskMuonAODfromGeneral.cxx:213 AliAnalysisTaskMuonAODfromGeneral.cxx:214 AliAnalysisTaskMuonAODfromGeneral.cxx:215