+ // Create the output container
+ //
+ if (fDebug > 1) printf("AnalysisTaskJets::CreateOutPutData() \n");
+
+ AliJetHeader *fH = fJetFinder->GetHeader();
+
+ if(fNonStdBranch.Length()==0)
+ {
+ // Connec default AOD to jet finder
+ // create a new branch for the background
+
+ if(fUseAODBackground){
+ if(!AODEvent()->FindListObject(AliAODJetEventBackground::StdBranchName())){
+ AliAODJetEventBackground* evBkg = new AliAODJetEventBackground();
+ evBkg->SetName(AliAODJetEventBackground::StdBranchName());
+ AddAODBranch("AliAODJetEventBackground",&evBkg);
+ }
+ }
+ fJetFinder->ConnectAOD(AODEvent());
+ }
+ else
+ {
+ // Create a new branch for jets...
+ // how is this reset? -> cleared in the UserExec....
+ // Can this be handled by the framework?
+ // here we can also have the case that the brnaches are written to a separate file
+
+ TClonesArray *tca = new TClonesArray("AliAODJet", 0);
+ tca->SetName(fNonStdBranch.Data());
+ AddAODBranch("TClonesArray",&tca,fNonStdFile.Data());
+ if(fUseAODBackground){
+ if(!AODEvent() || !AODEvent()->FindListObject(Form("%s_%s",AliAODJetEventBackground::StdBranchName(),fNonStdBranch.Data()))){
+ AliAODJetEventBackground* evBkg = new AliAODJetEventBackground();
+ evBkg->SetName(Form("%s_%s",AliAODJetEventBackground::StdBranchName(),fNonStdBranch.Data()));
+ AddAODBranch("AliAODJetEventBackground",&evBkg,fNonStdFile.Data());
+ }
+ }
+ if(fNonStdFile.Length()!=0){
+ //
+ // case that we have an AOD extension we need to fetch the jets from the extended output
+ // we identifay the extension aod event by looking for the branchname
+ AliAODHandler *aodH = dynamic_cast<AliAODHandler*>(AliAnalysisManager::GetAnalysisManager()->GetOutputEventHandler());
+ fAODExtension = 0;
+ if(aodH){
+ TObjArray* extArray = aodH->GetExtensions();
+ if (extArray) {
+ TIter next(extArray);
+ while ((fAODExtension=(AliAODExtension*)next())){
+ TObject *obj = fAODExtension->GetAOD()->FindListObject(fNonStdBranch.Data());
+ if(fDebug>10){
+ Printf("%s:%d Dumping..",(char*)__FILE__,__LINE__);
+ fAODExtension->GetAOD()->Dump();
+ }
+ if(obj){
+ if(fDebug>1)Printf("AODExtension found for %s",fNonStdBranch.Data());
+ break;
+ }
+ fAODExtension = 0;
+ }
+ }
+ }
+ if(fAODExtension)fJetFinder->ConnectAODNonStd(fAODExtension->GetAOD(), fNonStdBranch.Data());
+ }
+ else{
+ if (fDebug > 1) printf("Connecting Non Std Branch AOD %p %s \n",AODEvent(),fNonStdBranch.Data());
+ fJetFinder->ConnectAODNonStd(AODEvent(), fNonStdBranch.Data());
+ }
+ }
+
+ // do not add the histograms in the directory
+ // all handled by the list
+ Bool_t oldStatus = TH1::AddDirectoryStatus();
+ TH1::AddDirectory(kFALSE);
+
+
+ // Histograms
+ fListOfHistos = new TList();
+ fListOfHistos->SetOwner();
+ fHistos = new AliJetHistos();
+ fHistos->AddHistosToList(fListOfHistos);
+
+ // Add the JetFinderInformation to the Outputlist
+
+ // 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()));
+ }
+ }
+
+ TH1::AddDirectory(oldStatus);
+
+
+ if(!fAODExtension)OutputTree()->GetUserInfo()->Add(fH);
+ else fAODExtension->GetTree()->GetUserInfo()->Add(fH);
+
+ // post
+ PostData(1, fListOfHistos);