From e693cb03c0778589920ae31aa3b597195ba0b3ea Mon Sep 17 00:00:00 2001 From: prino Date: Thu, 2 Feb 2012 23:44:38 +0000 Subject: [PATCH] Fix against crash of TFile::Open in case of missing file with cut object --- .../macros/AddTaskCFMultiVarMultiStep.C | 4 ++ .../vertexingHF/macros/AddTaskCFVertexingHF.C | 5 ++ .../macros/AddTaskCFVertexingHF3Prong.C | 4 ++ .../macros/AddTaskCFVertexingHF3ProngLc.C | 5 ++ .../macros/AddTaskCFVertexingHFCascade.C | 5 ++ PWGHF/vertexingHF/macros/AddTaskD0Mass.C | 2 +- PWGHF/vertexingHF/macros/AddTaskDStarJets.C | 2 +- .../vertexingHF/macros/AddTaskDStarSpectra.C | 2 +- PWGHF/vertexingHF/macros/AddTaskDplus.C | 2 +- PWGHF/vertexingHF/macros/AddTaskDs.C | 2 +- PWGHF/vertexingHF/macros/AddTaskHFQA.C | 2 +- PWGHF/vertexingHF/macros/AddTaskLambdac.C | 2 +- .../macros/AddTaskSelectHF4Prong.C | 58 +++++++++---------- .../vertexingHF/macros/AddTaskSignificance.C | 2 +- 14 files changed, 60 insertions(+), 37 deletions(-) diff --git a/PWGHF/vertexingHF/macros/AddTaskCFMultiVarMultiStep.C b/PWGHF/vertexingHF/macros/AddTaskCFMultiVarMultiStep.C index a85a32e670e..3a97acbc0f9 100644 --- a/PWGHF/vertexingHF/macros/AddTaskCFMultiVarMultiStep.C +++ b/PWGHF/vertexingHF/macros/AddTaskCFMultiVarMultiStep.C @@ -51,6 +51,10 @@ AliCFHeavyFlavourTaskMultiVarMultiStep *AddTaskCFMultiVarMultiStep(const char* c printf("Adding CF task using cuts from file %s\n",cutFile); TFile* fileCuts = TFile::Open(cutFile); + if(!fileCuts || (fileCuts && !fileCuts->IsOpen())){ + AliError("Wrong cut file"); + return 0x0; + } AliRDHFCutsD0toKpi *cutsD0toKpi = (AliRDHFCutsD0toKpi*)fileCuts->Get("D0toKpiCutsStandard"); // check that the fKeepD0fromB flag is set to true when the fKeepD0fromBOnly flag is true diff --git a/PWGHF/vertexingHF/macros/AddTaskCFVertexingHF.C b/PWGHF/vertexingHF/macros/AddTaskCFVertexingHF.C index a29c1743caf..7aa03c34fd3 100644 --- a/PWGHF/vertexingHF/macros/AddTaskCFVertexingHF.C +++ b/PWGHF/vertexingHF/macros/AddTaskCFVertexingHF.C @@ -81,6 +81,11 @@ AliCFTaskVertexingHF *AddTaskCFVertexingHF(const char* cutFile = "./D0toKpiCuts. } TFile* fileCuts = TFile::Open(cutFile); + if(!fileCuts || (fileCuts && !fileCuts->IsOpen())){ + AliError("Wrong cut file"); + return 0x0; + } + AliRDHFCutsD0toKpi *cutsD0toKpi = (AliRDHFCutsD0toKpi*)fileCuts->Get("D0toKpiCutsStandard"); // check that the fKeepD0fromB flag is set to true when the fKeepD0fromBOnly flag is true diff --git a/PWGHF/vertexingHF/macros/AddTaskCFVertexingHF3Prong.C b/PWGHF/vertexingHF/macros/AddTaskCFVertexingHF3Prong.C index efa672bbdfc..34d6b47ef50 100644 --- a/PWGHF/vertexingHF/macros/AddTaskCFVertexingHF3Prong.C +++ b/PWGHF/vertexingHF/macros/AddTaskCFVertexingHF3Prong.C @@ -76,6 +76,10 @@ AliCFTaskVertexingHF *AddTaskCFVertexingHF3Prong(const char* cutFile = "./Dplust } TFile* fileCuts = TFile::Open(cutFile); + if(!fileCuts || (fileCuts && !fileCuts->IsOpen())){ + AliError("Wrong cut file"); + return 0x0; + } AliRDHFCutsDplustoKpipi *cutsDplustoKpipi = (AliRDHFCutsDplustoKpipi*)fileCuts->Get("AnalysisCuts"); // check that the fKeepD0fromB flag is set to true when the fKeepD0fromBOnly flag is true diff --git a/PWGHF/vertexingHF/macros/AddTaskCFVertexingHF3ProngLc.C b/PWGHF/vertexingHF/macros/AddTaskCFVertexingHF3ProngLc.C index 97cf4ae868c..7ec0325b8f5 100644 --- a/PWGHF/vertexingHF/macros/AddTaskCFVertexingHF3ProngLc.C +++ b/PWGHF/vertexingHF/macros/AddTaskCFVertexingHF3ProngLc.C @@ -82,6 +82,11 @@ AliCFContainer *AddTaskCFVertexingHF3ProngLc(const char* cutFile = "./cuts4Lctop } TFile* fileCuts = TFile::Open(cutFile); + if(!fileCuts || (fileCuts && !fileCuts->IsOpen())){ + AliError("Wrong cut file"); + return 0x0; + } + AliRDHFCutsLctopKpi *cutsLctopKpi = (AliRDHFCutsLctopKpi*)fileCuts->Get("LctopKpiProdCuts"); // check that the fKeepD0fromB flag is set to true when the fKeepD0fromBOnly flag is true diff --git a/PWGHF/vertexingHF/macros/AddTaskCFVertexingHFCascade.C b/PWGHF/vertexingHF/macros/AddTaskCFVertexingHFCascade.C index 158c76d7629..75aaf51ca4e 100644 --- a/PWGHF/vertexingHF/macros/AddTaskCFVertexingHFCascade.C +++ b/PWGHF/vertexingHF/macros/AddTaskCFVertexingHFCascade.C @@ -50,6 +50,11 @@ AliCFTaskVertexingHF *AddTaskCFVertexingHFCascade(const char* cutFile = "./DStar } TFile* fileCuts = TFile::Open(cutFile); + if(!fileCuts || (fileCuts && !fileCuts->IsOpen())){ + AliError("Wrong cut file"); + return 0x0; + } + AliRDHFCutsDStartoKpipi *cutsD0toKpi = (AliRDHFCutsDStartoKpipi*)fileCuts->Get("DStartoKpipiCuts"); // check that the fKeepD0fromB flag is set to true when the fKeepD0fromBOnly flag is true diff --git a/PWGHF/vertexingHF/macros/AddTaskD0Mass.C b/PWGHF/vertexingHF/macros/AddTaskD0Mass.C index 750f5ad1b0b..b7f2518f1e9 100644 --- a/PWGHF/vertexingHF/macros/AddTaskD0Mass.C +++ b/PWGHF/vertexingHF/macros/AddTaskD0Mass.C @@ -126,7 +126,7 @@ AliAnalysisTaskSED0Mass *AddTaskD0Mass(Int_t flag=0/*0 = D0,1 = LS*/,Bool_t read Bool_t stdcuts=kFALSE; TFile* filecuts=TFile::Open(finname.Data()); - if(!filecuts->IsOpen()){ + if(!filecuts ||(filecuts&& !filecuts->IsOpen())){ cout<<"Input file not found: using std cut object"<IsOpen()){ + if(!filecuts ||(filecuts&& !filecuts->IsOpen())){ cout<<"Input file not found: exit"<IsOpen()){ + if(!fileCuts || (fileCuts && !fileCuts->IsOpen())){ cout<<"Input file not found: exit"<IsOpen()){ + if(!filecuts ||(filecuts&& !filecuts->IsOpen())){ cout<<"Input file not found: using standard cuts"<IsOpen()){ + if(!filecuts ||(filecuts&& !filecuts->IsOpen())){ cout<<"Error: Input file not found!"<IsOpen()){ + if(!filecuts ||(filecuts&& !filecuts->IsOpen())){ cout<<"Input file not found: using std cut object"<IsOpen()){ + if(!filecuts ||(filecuts&& !filecuts->IsOpen())){ cout<<"Input file not found: using std cut object"<SetOutputFileName("AliAOD.VertexingHF.sa.root"); - aodHandler->SetCreateNonStandardAOD(); - mgr->SetOutputEventHandler(aodHandler); + // F.Colamaria, fabio.colamaria@ba.infn.it + // + + // Get the pointer to the existing analysis manager via the static access method. + //============================================================================== + AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager(); + if (!mgr) { + ::Error("AddTaskSelectHF4Prong", "No analysis manager to connect to."); + return NULL; + } + + // Output + AliAODHandler *aodHandler = new AliAODHandler(); + aodHandler->SetOutputFileName("AliAOD.VertexingHF.sa.root"); + aodHandler->SetCreateNonStandardAOD(); + mgr->SetOutputEventHandler(aodHandler); //Cuts loading - TFile* filecuts=TFile::Open("Charm4ProngCutsDef.root"); - if(!filecuts->IsOpen()){ + TFile* filecuts=TFile::Open("Charm4ProngCutsDef.root"); + if(!filecuts ||(filecuts&& !filecuts->IsOpen())){ cout<<"Input file not found: exit"<SetDebugLevel(2); + hfTask->SetDebugLevel(2); mgr->AddTask(hfTask); - + // Create containers for input/output mgr->ConnectInput(hfTask,0,mgr->GetCommonInputContainer()); AliAnalysisDataContainer *contHist = mgr->CreateContainer("histos_bin1",TList::Class(),AliAnalysisManager::kOutputContainer,"HistMassInvAndCuts.root"); @@ -51,7 +51,7 @@ AliAnalysisTaskSESelectHF4Prong *AddTaskSelectHF4Prong() AliAnalysisDataContainer *contHist5 = mgr->CreateContainer("histos_bin5",TList::Class(),AliAnalysisManager::kOutputContainer,"HistMassInvAndCuts.root"); AliAnalysisDataContainer *contHistCuts = mgr->CreateContainer("histoscuts",TList::Class(),AliAnalysisManager::kOutputContainer,"HistMassInvAndCuts.root"); - mgr->ConnectOutput(hfTask,0,mgr->GetCommonOutputContainer()); + mgr->ConnectOutput(hfTask,0,mgr->GetCommonOutputContainer()); mgr->ConnectOutput(hfTask,1,contHist); mgr->ConnectOutput(hfTask,2,contHist2); mgr->ConnectOutput(hfTask,3,contHist3); @@ -59,5 +59,5 @@ AliAnalysisTaskSESelectHF4Prong *AddTaskSelectHF4Prong() mgr->ConnectOutput(hfTask,5,contHist5); mgr->ConnectOutput(hfTask,6,contHistCuts); - return hfTask; -} + return hfTask; +} diff --git a/PWGHF/vertexingHF/macros/AddTaskSignificance.C b/PWGHF/vertexingHF/macros/AddTaskSignificance.C index cb22be9d754..948001ab356 100644 --- a/PWGHF/vertexingHF/macros/AddTaskSignificance.C +++ b/PWGHF/vertexingHF/macros/AddTaskSignificance.C @@ -15,7 +15,7 @@ AliAnalysisTaskSESignificance *AddTaskSignificance(TString filename="cuts4Signif } TFile* filecuts=TFile::Open(filename.Data()); - if(!filecuts->IsOpen()){ + if(!filecuts ||(filecuts&& !filecuts->IsOpen())){ cout<<"Input file not found: exit"<