return NULL;
}
- if (writeITSTP) {
- AliAODHandler* aodHandler = new AliAODHandler();
- aodHandler->SetOutputFileName( "AODtpITS.root" );
- aodHandler->SetCreateNonStandardAOD();
- mgr->SetOutputEventHandler(aodHandler);
- }
-
// Create and configure the task
AliAnalysisTaskITSAlignQA *taskali = new AliAnalysisTaskITSAlignQA();
// taskali->SelectCollisionCandidates();
mgr->ConnectInput(taskali, 0, mgr->GetCommonInputContainer());
mgr->ConnectOutput(taskali, 1, coutput1);
+ //
+ if (writeITSTP) { // if the TPtree to be written, create separate container
+ AliAnalysisDataContainer *coutputTP = mgr->CreateContainer("ITSSumTP",
+ TTree::Class(),
+ AliAnalysisManager::kOutputContainer,
+ "AODtpITS.root" );
+ mgr->ConnectOutput(taskali, 2, coutputTP);
+ }
+ //
+
return taskali;
}
return NULL;
}
- if (writeITSTP) {
- AliAODHandler* aodHandler = new AliAODHandler();
- aodHandler->SetOutputFileName( "AODtpITS.root" );
- aodHandler->SetCreateNonStandardAOD();
- mgr->SetOutputEventHandler(aodHandler);
- }
-
// Create and configure the task
AliAnalysisTaskITSAlignQA *taskali = new AliAnalysisTaskITSAlignQA();
// taskali->SelectCollisionCandidates();
mgr->ConnectInput(taskali, 0, mgr->GetCommonInputContainer());
mgr->ConnectOutput(taskali, 1, coutput1);
+ //
+ if (writeITSTP) { // if the TPtree to be written, create separate container
+ AliAnalysisDataContainer *coutputTP = mgr->CreateContainer("ITSSumTP",
+ TTree::Class(),
+ AliAnalysisManager::kOutputContainer,
+ "AODtpITS.root" );
+ mgr->ConnectOutput(taskali, 2, coutputTP);
+ }
+ //
+
return taskali;
}
#include <TProfile.h>
#include <TChain.h>
#include <TGeoGlobalMagField.h>
-#include "AliAODHandler.h"
#include "AliESDInputHandlerRP.h"
#include "AliITSSumTP.h"
#include "AliMagF.h"
fCutDCAZ(1.e10),
fFitter(0),
fITSSumTP(),
+ fTPTree(),
fRunNb(0),
fOCDBLocation("local://$ALICE_ROOT/OCDB")
{
//___________________________________________________________________________
AliAnalysisTaskITSAlignQA::~AliAnalysisTaskITSAlignQA(){
//
- if (fOutput && !AliAnalysisManager::GetAnalysisManager()->IsProofMode()) delete fOutput;
+ if (fOutput && !AliAnalysisManager::GetAnalysisManager()->IsProofMode()) {
+ delete fOutput;
+ delete fITSSumTP;
+ }
delete fFitter;
- delete fITSSumTP;
+ delete fTPTree;
//
}
//___________________________________________________________________________
if(fDoSSDResiduals) CreateSSDHistos();
//
if (fDoFillTPTree) {
+ TFile* troutf = OpenFile(2);
+ if (!troutf) {
+ AliFatal("Failed to open output file for AliITSSumTP tree");
+ exit(1);
+ }
fITSSumTP = new AliITSSumTP();
- AliAODHandler* handler = dynamic_cast<AliAODHandler*>( AliAnalysisManager::GetAnalysisManager()->GetOutputEventHandler() );
- if (!handler) AliFatal("TP tree requested but AOD handler is not available");
- handler->AddBranch("AliITSSumTP",&fITSSumTP);
- handler->SetFillAOD(kFALSE); // manual fill
+ fTPTree = new TTree("ITSSumTP","ITS TP Summary");
+ fTPTree->Branch("AliITSSumTP","AliITSSumTP",&fITSSumTP);
CreateUserInfo();
+ PostData(2,fTPTree);
}
//
PostData(1,fOutput);
}
}
fITSSumTP->SetUniqueID(fCurrentRunNumber);
- AliAODHandler* handler = dynamic_cast<AliAODHandler*>( AliAnalysisManager::GetAnalysisManager()->GetOutputEventHandler() );
- if (ntp) handler->FillTree();
+ if (ntp) fTPTree->Fill();
}
//
fHistNEvents = dynamic_cast<TH1F*>(fOutput->FindObject("hNEvents"));
if(fHistNEvents){
- printf("Number of analyzed events = %d, %d tracks accepted\n",
- (Int_t)fHistNEvents->GetBinContent(kEvAcc+1),(Int_t)fHistNEvents->GetBinContent(kNTracks+1));
+ AliInfo(Form("Number of analyzed events = %d, %d tracks accepted",
+ (Int_t)fHistNEvents->GetBinContent(kEvAcc+1),(Int_t)fHistNEvents->GetBinContent(kNTracks+1)));
}else{
printf("Warning: pointer to fHistNEvents is NULL\n");
}
void AliAnalysisTaskITSAlignQA::CreateUserInfo()
{
// if needed, set user info of the output tree
- AliAODHandler* handler = dynamic_cast<AliAODHandler*>( AliAnalysisManager::GetAnalysisManager()->GetOutputEventHandler() );
- if (!handler) return;
- TTree* outTree = handler->GetTree();
+ if (!fTPTree) {
+ AliError("TrackPoints summary tree does not exist");
+ return;
+ }
//
const TMap *cdbMap = AliCDBManager::Instance()->GetStorageMap();
const TList *cdbList = AliCDBManager::Instance()->GetRetrievedIds();
cdbListCopy->Add(new TObjString(id->ToString().Data()));
}
//
- outTree->GetUserInfo()->Add(cdbMapCopy);
- outTree->GetUserInfo()->Add(cdbListCopy);
+ fTPTree->GetUserInfo()->Add(cdbMapCopy);
+ fTPTree->GetUserInfo()->Add(cdbListCopy);
//
AliMagF *fld = (AliMagF*)TGeoGlobalMagField::Instance()->GetField();
Double_t bz = fld ? fld->SolenoidField() : 0;
bzList->SetOwner(1);
bzList->SetName("BzkGauss");
bzList->Add(bzObjString);
- outTree->GetUserInfo()->Add(bzList);
+ fTPTree->GetUserInfo()->Add(bzList);
//
}
void SetDoFillTPTree(Bool_t opt){
fDoFillTPTree=opt;
+ if (fDoFillTPTree) DefineOutput(2,TTree::Class());
}
void SetDoSPDResiduals(Bool_t opt){
fDoSPDResiduals=opt;
Double_t fCutDCAXY; // apply rough XY DCA cut in case of vtx constraint, in terms of standard deviations
Double_t fCutDCAZ; // apply rough Z DCA cut in case of vtx constraint in terms of standard deviations
AliITSTPArrayFit* fFitter; // Track Point fitter
- AliITSSumTP* fITSSumTP; // TracPoints summary objects
+ AliITSSumTP* fITSSumTP; // !TracPoints summary objects
+ TTree* fTPTree; // !output tree for trackpoints
Int_t fRunNb; // Run number
TString fOCDBLocation; // OCDB location
ClassDef(AliAnalysisTaskITSAlignQA,6);
AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
mgr->SetCommonFileName("RecoQAresults.root");
//
- if (writeITSTP) {
- AliAODHandler* aodHandler = new AliAODHandler();
- aodHandler->SetOutputFileName( "AODtpITS.root" );
- aodHandler->SetCreateNonStandardAOD();
- mgr->SetOutputEventHandler(aodHandler);
- }
- //
// Event Statistics (Jan Fiete)
gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPhysicsSelection.C");
AliPhysicsSelectionTask* physSelTask = AddTaskPhysicsSelection(kFALSE /*MC*/);
itsAlign->SetDoSDDDriftTime(kFALSE);
itsAlign->SetMinMaxMult(20.,1070.);
itsAlign->SetUseTPCMomentum(useTPCcrv);
- //
itsAlign->SetDoFillTPTree(writeITSTP);
+ //
+ if (writeITSTP) {
+ AliAnalysisDataContainer *coutputTP = mgr->CreateContainer("ITSSumTP",
+ TTree::Class(),
+ AliAnalysisManager::kOutputContainer,
+ "AODtpITS.root" );
+ mgr->ConnectOutput(itsAlign, 2, coutputTP);
+ }
+ //
}