ROOT logo
//#ifndef ALIANALYSISTASKMUONAODCREATION_CXX
//#define ALIANALYSISTASKMUONAODCREATION_CXX

/* $Id$ */

#include <TChain.h>
#include <TTree.h>
#include <TList.h>
#include <TCanvas.h>
#include <TClonesArray.h>
#include <TH1.h>

#include "AliAnalysisTaskMuonAODCreation.h"
#include "AliAnalysisTaskSE.h"
#include "AliAnalysisManager.h"
#include "AliAnalysisDataSlot.h"
#include "AliESDEvent.h"
#include "AliESD.h"
#include "AliAODEvent.h"
#include "AliAODHeader.h"
#include "AliVEvent.h"
#include "AliAODHandler.h"
#include "AliAODInputHandler.h"
#include "AliMCEventHandler.h"
#include "AliInputEventHandler.h"
#include "AliMCEvent.h"
#include "AliStack.h"
#include "AliLog.h"

ClassImp(AliAnalysisTaskMuonAODCreation)

//__________________________________________________________________________
AliAnalysisTaskMuonAODCreation::AliAnalysisTaskMuonAODCreation() :
  fOutput(0x0),
  fTree(0x0),
  fOutputAOD(0x0)
{
}
//___________________________________________________________________________
AliAnalysisTaskMuonAODCreation::AliAnalysisTaskMuonAODCreation(const Char_t* name) :
  AliAnalysisTaskSE(name),
  fOutput(0x0),
  fTree(0x0),
  fOutputAOD(0x0)
{
  // Constructor. Initialization of Inputs and Outputs
  //
    
  DefineOutput(1,TList::Class());

}

//___________________________________________________________________________
AliAnalysisTaskMuonAODCreation& AliAnalysisTaskMuonAODCreation::operator=(const AliAnalysisTaskMuonAODCreation& c) 
{
  //
  // Assignment operator
  //
  if (this!=&c) {
    AliAnalysisTaskSE::operator=(c) ;
  }
  return *this;
}

//___________________________________________________________________________
AliAnalysisTaskMuonAODCreation::AliAnalysisTaskMuonAODCreation(const AliAnalysisTaskMuonAODCreation& c) :
  AliAnalysisTaskSE(c),
  fOutput(c.fOutput),
  fTree(c.fTree),
  fOutputAOD(c.fOutputAOD)
 {
  //
  // Copy Constructor										
  //
}

//___________________________________________________________________________
AliAnalysisTaskMuonAODCreation::~AliAnalysisTaskMuonAODCreation() {
  //
  //destructor
  //
  Info("~AliAnalysisTaskMuonAODCreation","Calling Destructor");
}

//___________________________________________________________________________
void AliAnalysisTaskMuonAODCreation::UserCreateOutputObjects(){
	
  AliAODHandler* handler = (AliAODHandler*) ((AliAnalysisManager::GetAnalysisManager())->GetOutputEventHandler());
 
  fOutputAOD   = handler->GetAOD();
  fTree = handler->GetTree();

  fOutput = new TList();
  fOutput->SetOwner(); 
 
  TH1D *pt_alltracks    = new TH1D("pt_alltracks","pt_alltracks",10,0,20);	
  TH1D *pt_muontracks    = new TH1D("pt_muontracks","pt_muontracks",10,0,20);	
	
  fOutput->Add(pt_alltracks); 	
  fOutput->Add(pt_muontracks); 	
  fOutput->ls(); 
} 



//_________________________________________________
void AliAnalysisTaskMuonAODCreation::UserExec(Option_t *)
{
  
  AliAODEvent *aod = dynamic_cast<AliAODEvent*> (InputEvent());
  if ( ! aod ) {
    AliError("Cannot get AOD event");
    return;
  }  
  
  Int_t nMuons=0;
 
  for (Int_t j = 0; j<aod->GetNumberOfTracks(); j++) { 
    AliAODTrack *track = dynamic_cast<AliAODTrack*>(aod->GetTrack(j));
    if(!track) AliFatal("Not a standard AOD");
    ((TH1D*)(fOutput->FindObject("pt_alltracks")))->Fill(track->Pt()); 
    if(track->IsMuonTrack()) {
      nMuons++;
      ((TH1D*)(fOutput->FindObject("pt_muontracks")))->Fill(track->Pt()); 
    }  
  }
         
  AliAODHandler* outputHandler = (AliAODHandler*) 
      ((AliAnalysisManager::GetAnalysisManager())->GetOutputEventHandler());	     
   
  outputHandler->SetFillAOD(kFALSE);
   
  if(nMuons>0) { 
    outputHandler->SetFillAOD(kTRUE);
   
    PostData(0,fTree);
    PostData(1,fOutput);
  } else {
    return;
  }
}


//________________________________________________________________________
void AliAnalysisTaskMuonAODCreation::Terminate(Option_t *) 
{
  TCanvas *c = new TCanvas("c","plots",20,20,600,600);
  c->Divide(2,2);
  
  TH1D *h_pt_all = dynamic_cast<TH1D*> (fOutput->FindObject("pt_alltracks"));  
  TH1D *h_pt_muons = dynamic_cast<TH1D*> (fOutput->FindObject("pt_muontracks"));  
  c->cd(1);
  if (h_pt_all) h_pt_all->Draw();
  c->cd(2);
  if (h_pt_muons) h_pt_muons->Draw();
  c->cd(3);
  if (h_pt_all) h_pt_all->Draw();
  if (h_pt_muons) h_pt_muons->Draw("same");
}

 AliAnalysisTaskMuonAODCreation.cxx:1
 AliAnalysisTaskMuonAODCreation.cxx:2
 AliAnalysisTaskMuonAODCreation.cxx:3
 AliAnalysisTaskMuonAODCreation.cxx:4
 AliAnalysisTaskMuonAODCreation.cxx:5
 AliAnalysisTaskMuonAODCreation.cxx:6
 AliAnalysisTaskMuonAODCreation.cxx:7
 AliAnalysisTaskMuonAODCreation.cxx:8
 AliAnalysisTaskMuonAODCreation.cxx:9
 AliAnalysisTaskMuonAODCreation.cxx:10
 AliAnalysisTaskMuonAODCreation.cxx:11
 AliAnalysisTaskMuonAODCreation.cxx:12
 AliAnalysisTaskMuonAODCreation.cxx:13
 AliAnalysisTaskMuonAODCreation.cxx:14
 AliAnalysisTaskMuonAODCreation.cxx:15
 AliAnalysisTaskMuonAODCreation.cxx:16
 AliAnalysisTaskMuonAODCreation.cxx:17
 AliAnalysisTaskMuonAODCreation.cxx:18
 AliAnalysisTaskMuonAODCreation.cxx:19
 AliAnalysisTaskMuonAODCreation.cxx:20
 AliAnalysisTaskMuonAODCreation.cxx:21
 AliAnalysisTaskMuonAODCreation.cxx:22
 AliAnalysisTaskMuonAODCreation.cxx:23
 AliAnalysisTaskMuonAODCreation.cxx:24
 AliAnalysisTaskMuonAODCreation.cxx:25
 AliAnalysisTaskMuonAODCreation.cxx:26
 AliAnalysisTaskMuonAODCreation.cxx:27
 AliAnalysisTaskMuonAODCreation.cxx:28
 AliAnalysisTaskMuonAODCreation.cxx:29
 AliAnalysisTaskMuonAODCreation.cxx:30
 AliAnalysisTaskMuonAODCreation.cxx:31
 AliAnalysisTaskMuonAODCreation.cxx:32
 AliAnalysisTaskMuonAODCreation.cxx:33
 AliAnalysisTaskMuonAODCreation.cxx:34
 AliAnalysisTaskMuonAODCreation.cxx:35
 AliAnalysisTaskMuonAODCreation.cxx:36
 AliAnalysisTaskMuonAODCreation.cxx:37
 AliAnalysisTaskMuonAODCreation.cxx:38
 AliAnalysisTaskMuonAODCreation.cxx:39
 AliAnalysisTaskMuonAODCreation.cxx:40
 AliAnalysisTaskMuonAODCreation.cxx:41
 AliAnalysisTaskMuonAODCreation.cxx:42
 AliAnalysisTaskMuonAODCreation.cxx:43
 AliAnalysisTaskMuonAODCreation.cxx:44
 AliAnalysisTaskMuonAODCreation.cxx:45
 AliAnalysisTaskMuonAODCreation.cxx:46
 AliAnalysisTaskMuonAODCreation.cxx:47
 AliAnalysisTaskMuonAODCreation.cxx:48
 AliAnalysisTaskMuonAODCreation.cxx:49
 AliAnalysisTaskMuonAODCreation.cxx:50
 AliAnalysisTaskMuonAODCreation.cxx:51
 AliAnalysisTaskMuonAODCreation.cxx:52
 AliAnalysisTaskMuonAODCreation.cxx:53
 AliAnalysisTaskMuonAODCreation.cxx:54
 AliAnalysisTaskMuonAODCreation.cxx:55
 AliAnalysisTaskMuonAODCreation.cxx:56
 AliAnalysisTaskMuonAODCreation.cxx:57
 AliAnalysisTaskMuonAODCreation.cxx:58
 AliAnalysisTaskMuonAODCreation.cxx:59
 AliAnalysisTaskMuonAODCreation.cxx:60
 AliAnalysisTaskMuonAODCreation.cxx:61
 AliAnalysisTaskMuonAODCreation.cxx:62
 AliAnalysisTaskMuonAODCreation.cxx:63
 AliAnalysisTaskMuonAODCreation.cxx:64
 AliAnalysisTaskMuonAODCreation.cxx:65
 AliAnalysisTaskMuonAODCreation.cxx:66
 AliAnalysisTaskMuonAODCreation.cxx:67
 AliAnalysisTaskMuonAODCreation.cxx:68
 AliAnalysisTaskMuonAODCreation.cxx:69
 AliAnalysisTaskMuonAODCreation.cxx:70
 AliAnalysisTaskMuonAODCreation.cxx:71
 AliAnalysisTaskMuonAODCreation.cxx:72
 AliAnalysisTaskMuonAODCreation.cxx:73
 AliAnalysisTaskMuonAODCreation.cxx:74
 AliAnalysisTaskMuonAODCreation.cxx:75
 AliAnalysisTaskMuonAODCreation.cxx:76
 AliAnalysisTaskMuonAODCreation.cxx:77
 AliAnalysisTaskMuonAODCreation.cxx:78
 AliAnalysisTaskMuonAODCreation.cxx:79
 AliAnalysisTaskMuonAODCreation.cxx:80
 AliAnalysisTaskMuonAODCreation.cxx:81
 AliAnalysisTaskMuonAODCreation.cxx:82
 AliAnalysisTaskMuonAODCreation.cxx:83
 AliAnalysisTaskMuonAODCreation.cxx:84
 AliAnalysisTaskMuonAODCreation.cxx:85
 AliAnalysisTaskMuonAODCreation.cxx:86
 AliAnalysisTaskMuonAODCreation.cxx:87
 AliAnalysisTaskMuonAODCreation.cxx:88
 AliAnalysisTaskMuonAODCreation.cxx:89
 AliAnalysisTaskMuonAODCreation.cxx:90
 AliAnalysisTaskMuonAODCreation.cxx:91
 AliAnalysisTaskMuonAODCreation.cxx:92
 AliAnalysisTaskMuonAODCreation.cxx:93
 AliAnalysisTaskMuonAODCreation.cxx:94
 AliAnalysisTaskMuonAODCreation.cxx:95
 AliAnalysisTaskMuonAODCreation.cxx:96
 AliAnalysisTaskMuonAODCreation.cxx:97
 AliAnalysisTaskMuonAODCreation.cxx:98
 AliAnalysisTaskMuonAODCreation.cxx:99
 AliAnalysisTaskMuonAODCreation.cxx:100
 AliAnalysisTaskMuonAODCreation.cxx:101
 AliAnalysisTaskMuonAODCreation.cxx:102
 AliAnalysisTaskMuonAODCreation.cxx:103
 AliAnalysisTaskMuonAODCreation.cxx:104
 AliAnalysisTaskMuonAODCreation.cxx:105
 AliAnalysisTaskMuonAODCreation.cxx:106
 AliAnalysisTaskMuonAODCreation.cxx:107
 AliAnalysisTaskMuonAODCreation.cxx:108
 AliAnalysisTaskMuonAODCreation.cxx:109
 AliAnalysisTaskMuonAODCreation.cxx:110
 AliAnalysisTaskMuonAODCreation.cxx:111
 AliAnalysisTaskMuonAODCreation.cxx:112
 AliAnalysisTaskMuonAODCreation.cxx:113
 AliAnalysisTaskMuonAODCreation.cxx:114
 AliAnalysisTaskMuonAODCreation.cxx:115
 AliAnalysisTaskMuonAODCreation.cxx:116
 AliAnalysisTaskMuonAODCreation.cxx:117
 AliAnalysisTaskMuonAODCreation.cxx:118
 AliAnalysisTaskMuonAODCreation.cxx:119
 AliAnalysisTaskMuonAODCreation.cxx:120
 AliAnalysisTaskMuonAODCreation.cxx:121
 AliAnalysisTaskMuonAODCreation.cxx:122
 AliAnalysisTaskMuonAODCreation.cxx:123
 AliAnalysisTaskMuonAODCreation.cxx:124
 AliAnalysisTaskMuonAODCreation.cxx:125
 AliAnalysisTaskMuonAODCreation.cxx:126
 AliAnalysisTaskMuonAODCreation.cxx:127
 AliAnalysisTaskMuonAODCreation.cxx:128
 AliAnalysisTaskMuonAODCreation.cxx:129
 AliAnalysisTaskMuonAODCreation.cxx:130
 AliAnalysisTaskMuonAODCreation.cxx:131
 AliAnalysisTaskMuonAODCreation.cxx:132
 AliAnalysisTaskMuonAODCreation.cxx:133
 AliAnalysisTaskMuonAODCreation.cxx:134
 AliAnalysisTaskMuonAODCreation.cxx:135
 AliAnalysisTaskMuonAODCreation.cxx:136
 AliAnalysisTaskMuonAODCreation.cxx:137
 AliAnalysisTaskMuonAODCreation.cxx:138
 AliAnalysisTaskMuonAODCreation.cxx:139
 AliAnalysisTaskMuonAODCreation.cxx:140
 AliAnalysisTaskMuonAODCreation.cxx:141
 AliAnalysisTaskMuonAODCreation.cxx:142
 AliAnalysisTaskMuonAODCreation.cxx:143
 AliAnalysisTaskMuonAODCreation.cxx:144
 AliAnalysisTaskMuonAODCreation.cxx:145
 AliAnalysisTaskMuonAODCreation.cxx:146
 AliAnalysisTaskMuonAODCreation.cxx:147
 AliAnalysisTaskMuonAODCreation.cxx:148
 AliAnalysisTaskMuonAODCreation.cxx:149
 AliAnalysisTaskMuonAODCreation.cxx:150
 AliAnalysisTaskMuonAODCreation.cxx:151
 AliAnalysisTaskMuonAODCreation.cxx:152
 AliAnalysisTaskMuonAODCreation.cxx:153
 AliAnalysisTaskMuonAODCreation.cxx:154
 AliAnalysisTaskMuonAODCreation.cxx:155
 AliAnalysisTaskMuonAODCreation.cxx:156
 AliAnalysisTaskMuonAODCreation.cxx:157
 AliAnalysisTaskMuonAODCreation.cxx:158
 AliAnalysisTaskMuonAODCreation.cxx:159
 AliAnalysisTaskMuonAODCreation.cxx:160