X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=JETAN%2FAliAnalysisTaskJets.cxx;h=4e755a9d426a7a7df33dcff0037fe293c6ea96f6;hb=496aee550629be3d4e8973b04eb85208d470279b;hp=3e718ed1a704d20448619fd8360dc7078feb66a8;hpb=691685d663ef3361e1d9315ac5d510bf6b174af5;p=u%2Fmrichter%2FAliRoot.git diff --git a/JETAN/AliAnalysisTaskJets.cxx b/JETAN/AliAnalysisTaskJets.cxx index 3e718ed1a70..4e755a9d426 100644 --- a/JETAN/AliAnalysisTaskJets.cxx +++ b/JETAN/AliAnalysisTaskJets.cxx @@ -12,21 +12,28 @@ * about the suitability of this software for any purpose. It is * * provided "as is" without express or implied warranty. * **************************************************************************/ + +/* $Id$ */ #include #include #include #include #include -#include +#include #include "AliAnalysisTaskJets.h" #include "AliAnalysisManager.h" #include "AliJetFinder.h" +#include "AliJetHeader.h" +#include "AliJetHistos.h" #include "AliESDEvent.h" +#include "AliESD.h" #include "AliAODEvent.h" #include "AliAODHandler.h" #include "AliMCEventHandler.h" +#include "AliESDInputHandler.h" +#include "AliMCEvent.h" #include "AliStack.h" @@ -35,49 +42,68 @@ ClassImp(AliAnalysisTaskJets) //////////////////////////////////////////////////////////////////////// AliAnalysisTaskJets::AliAnalysisTaskJets(): - fDebug(0), - fJetFinder(0x0), - fChain(0x0), - fESD(0x0), - fAOD(0x0), - fTreeA(0x0), - fHisto(0x0) + AliAnalysisTaskSE(), + fConfigFile("ConfigJetAnalysis.C"), + fNonStdBranch(""), + fJetFinder(0x0), + fHistos(0x0), + fListOfHistos(0x0) { // Default constructor } AliAnalysisTaskJets::AliAnalysisTaskJets(const char* name): - AliAnalysisTask(name, "AnalysisTaskJets"), - fDebug(0), + AliAnalysisTaskSE(name), + fConfigFile("ConfigJetAnalysis.C"), + fNonStdBranch(""), fJetFinder(0x0), - fChain(0x0), - fESD(0x0), - fAOD(0x0), - fTreeA(0x0), - fHisto(0x0) + fHistos(0x0), + fListOfHistos(0x0) { // Default constructor - DefineInput (0, TChain::Class()); - DefineOutput(0, TTree::Class()); - DefineOutput(1, TH1F::Class()); + DefineOutput(1, TList::Class()); } -void AliAnalysisTaskJets::CreateOutputObjects() +void AliAnalysisTaskJets::UserCreateOutputObjects() { // Create the output container // -// Default AOD if (fDebug > 1) printf("AnalysisTaskJets::CreateOutPutData() \n"); - AliAODHandler* handler = (AliAODHandler*) ((AliAnalysisManager::GetAnalysisManager())->GetOutputEventHandler()); + - fAOD = handler->GetAOD(); - fTreeA = handler->GetTree(); - fJetFinder->ConnectAOD(fAOD); -// -// Histogram + + if(fNonStdBranch.Length()==0){ + // Connec default AOD to jet finder + fJetFinder->ConnectAOD(AODEvent()); + } + else{ + // Create a new branch for jets... + // how is this is reset cleared in the UserExec.... + // Can this be handled by the framework? + TClonesArray *tca = new TClonesArray("AliAODJet", 0); + tca->SetName(fNonStdBranch); + AddAODBranch("TClonesArray",&tca); + fJetFinder->ConnectAODNonStd(AODEvent(),fNonStdBranch.Data()); + } + // Histograms OpenFile(1); - fHisto = new TH1F("fHisto", "Jet Et", 100, 0., 100.); + fListOfHistos = new TList(); + fHistos = new AliJetHistos(); + fHistos->AddHistosToList(fListOfHistos); + // Add the JetFinderInforamtion to the Outputlist + AliJetHeader *fH = fJetFinder->GetHeader(); + // Compose a characteristic output name + // with the name of the output branch + if(fH){ + if(fNonStdBranch.Length()==0){ + fH->SetName("AliJetHeader_jets"); + } + else{ + fH->SetName(Form("AliJetHeader_%s",fNonStdBranch.Data())); + } + } + OutputTree()->GetUserInfo()->Add(fH); } void AliAnalysisTaskJets::Init() @@ -86,38 +112,42 @@ void AliAnalysisTaskJets::Init() if (fDebug > 1) printf("AnalysisTaskJets::Init() \n"); // Call configuration file - gROOT->LoadMacro("ConfigJetAnalysis.C"); - fJetFinder = (AliJetFinder*) gInterpreter->ProcessLine("ConfigJetAnalysis()"); + if (fConfigFile.Length()) { + gROOT->LoadMacro(fConfigFile); + fJetFinder = (AliJetFinder*) gInterpreter->ProcessLine("ConfigJetAnalysis()"); + } // Initialise Jet Analysis fJetFinder->Init(); // Write header information to local file fJetFinder->WriteHeaders(); } -void AliAnalysisTaskJets::ConnectInputData(Option_t */*option*/) -{ -// Connect the input data - if (fDebug > 1) printf("AnalysisTaskJets::ConnectInputData() \n"); - fChain = (TChain*)GetInputData(0); - fESD = new AliESDEvent(); - fESD->ReadFromTree(fChain); - fJetFinder->ConnectTree(fChain, fESD); -} + -void AliAnalysisTaskJets::Exec(Option_t */*option*/) + + +void AliAnalysisTaskJets::UserExec(Option_t */*option*/) { -// Execute analysis for current event -// - AliMCEventHandler* mctruth = (AliMCEventHandler*) - ((AliAnalysisManager::GetAnalysisManager())->GetMCtruthEventHandler()); - AliStack* stack = mctruth->Stack(); - printf("AliAnalysisTaskJets: Number of tracks %5d\n", stack->GetNtrack()); - - Long64_t ientry = fChain->GetReadEntry(); - if (fDebug > 1) printf("Analysing event # %5d\n", (Int_t) ientry); - fJetFinder->ProcessEvent(ientry); - PostData(0, fTreeA); - PostData(1, fHisto); + // Execute analysis for current event + // + + + // Fill control histos + TClonesArray* jarray = 0; + if(fNonStdBranch.Length()==0){ + jarray = AODEvent()->GetJets(); + } + else{ + jarray = dynamic_cast(AODEvent()->FindListObject(fNonStdBranch.Data())); + jarray->Delete(); // this is our responsibility, clear before filling again + } + + fJetFinder->GetReader()->SetInputEvent(InputEvent(), AODEvent(), MCEvent()); + fJetFinder->ProcessEvent(); + + fHistos->FillHistos(jarray); + // Post the data + PostData(1, fListOfHistos); } void AliAnalysisTaskJets::Terminate(Option_t */*option*/) @@ -125,6 +155,6 @@ void AliAnalysisTaskJets::Terminate(Option_t */*option*/) // Terminate analysis // if (fDebug > 1) printf("AnalysisJets: Terminate() \n"); - // if (fJetFinder) fJetFinder->FinishRun(); +// if (fJetFinder) fJetFinder->FinishRun(); }