#ifndef ATLAS_AtlHistFactoryBreakdownTask
#include <AtlHistFactoryBreakdownTask.h>
#endif
#include <AtlHistFactoryBreakdownEntry.h>
#include <AtlHistFactoryMeasurement.h>
#include <RooAbsData.h>
#include <RooWorkspace.h>
#include <RooStats/ProfileLikelihoodTestStat.h>
#include <TFile.h>
#include <TString.h>
#include <iostream>
using namespace std;
using namespace RooStats;
using namespace RooFit;
#ifndef __CINT__
ClassImp(AtlHistFactoryBreakdownTask);
#endif
AtlHistFactoryBreakdownTask::AtlHistFactoryBreakdownTask(const char* name,
const char* title,
AtlHistFactoryMeasurement *meas)
: TTask(name, title) {
fMeasurement = meas;
TString *filename = fMeasurement->GetModelFileName();
TFile *f = new TFile(filename->Data());
if ( f->IsZombie() ) {
Info("AtlHistFactoryBreakdownTask",
"Model file %s does not exist or is corrupted. Deactivate task.",
filename->Data());
Info("AtlHistFactoryBreakdownTask",
"Please create a model file first and then recreate this task");
SetActive(kFALSE);
} else {
Info("AtlHistFactoryBreakdownTask",
"Model file %s found. Activate task.",
filename->Data());
SetActive(kTRUE);
Initialize();
}
}
AtlHistFactoryBreakdownTask::~AtlHistFactoryBreakdownTask() {
}
void AtlHistFactoryBreakdownTask::Initialize() {
Info("Initialize",
"Create tasks for breakdown table.");
TString *ws_filename = fMeasurement->GetModelFileName();
TFile *f_ws = TFile::Open(ws_filename->Data());
if ( f_ws == 0 ) {
Error("CreateSystBreakdown", "Couldn't find file with name: %s",
ws_filename->Data());
}
RooWorkspace *wSpace = (RooWorkspace*) f_ws->Get("combined");
ModelConfig *model = (ModelConfig*) wSpace->obj("ModelConfig");
RooRealVar *par = 0;
RooArgSet *nuis = (RooArgSet*)model->GetNuisanceParameters();
TIterator *next_nuis = nuis->createIterator();
TString jobhome = (fMeasurement->GetOutputDir())->Data();
jobhome.Append("/breakdown_config/");
jobhome.ReplaceAll("//", "/");
TString outdir = (fMeasurement->GetOutputDir())->Data();
outdir.Append("/breakdown/");
outdir.ReplaceAll("//", "/");
TString dataset = fMeasurement->GetUseAsimovData() ? "asimovData" : "obsData";
AtlHistFactoryBreakdownEntry *entry = new AtlHistFactoryBreakdownEntry("Total", "Total",
"TotalUncertainty");
entry->SetMeasurement(fMeasurement);
entry->SetJobHome(Form("%s/%s/%s", jobhome.Data(), "Total", dataset.Data()));
entry->SetOutputFile(Form("%s/%s/breakdown_%s_%s.root",
outdir.Data(),
fMeasurement->GetUseAsimovData() ? "asimovData" : "obsData",
"combined",
"TotalUncertainty"));
Add(entry);
entry = new AtlHistFactoryBreakdownEntry("Data_stat", "Data stat.",
"data_stat");
entry->SetMeasurement(fMeasurement);
entry->SetJobHome(Form("%s/%s/%s", jobhome.Data(), "data_stat", dataset.Data()));
entry->SetOutputFile(Form("%s/%s/breakdown_%s_%s.root",
outdir.Data(),
fMeasurement->GetUseAsimovData() ? "asimovData" : "obsData",
"combined",
"Datastat"));
Add(entry);
entry = new AtlHistFactoryBreakdownEntry("MC_stat", "MC stat.",
"gamma_stat");
entry->SetMeasurement(fMeasurement);
entry->SetJobHome(Form("%s/%s/%s", jobhome.Data(), "gamma_stat", dataset.Data()));
entry->SetOutputFile(Form("%s/%s/breakdown_%s_%s.root",
outdir.Data(),
fMeasurement->GetUseAsimovData() ? "asimovData" : "obsData",
"combined",
"MCstat"));
Add(entry);
while ((par = (RooRealVar*)next_nuis->Next())) {
TString parname = par->GetName();
if ( parname.Contains("gamma_stat") )
continue;
entry = new AtlHistFactoryBreakdownEntry(Form("Syst_%s", parname.Data()),
Form("Syst_%s", parname.Data()),
parname.Data());
entry->SetMeasurement(fMeasurement);
entry->SetJobHome(Form("%s/%s/%s", jobhome.Data(), parname.Data(), dataset.Data()));
entry->SetOutputFile(Form("%s/%s/breakdown_%s_%s.root",
outdir.Data(),
fMeasurement->GetUseAsimovData() ? "asimovData" : "obsData",
"combined",
parname.Data()));
Add(entry);
}
}
AtlHistFactoryBreakdownTask.cxx:1 AtlHistFactoryBreakdownTask.cxx:2 AtlHistFactoryBreakdownTask.cxx:3 AtlHistFactoryBreakdownTask.cxx:4 AtlHistFactoryBreakdownTask.cxx:5 AtlHistFactoryBreakdownTask.cxx:6 AtlHistFactoryBreakdownTask.cxx:7 AtlHistFactoryBreakdownTask.cxx:8 AtlHistFactoryBreakdownTask.cxx:9 AtlHistFactoryBreakdownTask.cxx:10 AtlHistFactoryBreakdownTask.cxx:11 AtlHistFactoryBreakdownTask.cxx:12 AtlHistFactoryBreakdownTask.cxx:13 AtlHistFactoryBreakdownTask.cxx:14 AtlHistFactoryBreakdownTask.cxx:15 AtlHistFactoryBreakdownTask.cxx:16 AtlHistFactoryBreakdownTask.cxx:17 AtlHistFactoryBreakdownTask.cxx:18 AtlHistFactoryBreakdownTask.cxx:19 AtlHistFactoryBreakdownTask.cxx:20 AtlHistFactoryBreakdownTask.cxx:21 AtlHistFactoryBreakdownTask.cxx:22 AtlHistFactoryBreakdownTask.cxx:23 AtlHistFactoryBreakdownTask.cxx:24 AtlHistFactoryBreakdownTask.cxx:25 AtlHistFactoryBreakdownTask.cxx:26 AtlHistFactoryBreakdownTask.cxx:27 AtlHistFactoryBreakdownTask.cxx:28 AtlHistFactoryBreakdownTask.cxx:29 AtlHistFactoryBreakdownTask.cxx:30 AtlHistFactoryBreakdownTask.cxx:31 AtlHistFactoryBreakdownTask.cxx:32 AtlHistFactoryBreakdownTask.cxx:33 AtlHistFactoryBreakdownTask.cxx:34 AtlHistFactoryBreakdownTask.cxx:35 AtlHistFactoryBreakdownTask.cxx:36 AtlHistFactoryBreakdownTask.cxx:37 AtlHistFactoryBreakdownTask.cxx:38 AtlHistFactoryBreakdownTask.cxx:39 AtlHistFactoryBreakdownTask.cxx:40 AtlHistFactoryBreakdownTask.cxx:41 AtlHistFactoryBreakdownTask.cxx:42 AtlHistFactoryBreakdownTask.cxx:43 AtlHistFactoryBreakdownTask.cxx:44 AtlHistFactoryBreakdownTask.cxx:45 AtlHistFactoryBreakdownTask.cxx:46 AtlHistFactoryBreakdownTask.cxx:47 AtlHistFactoryBreakdownTask.cxx:48 AtlHistFactoryBreakdownTask.cxx:49 AtlHistFactoryBreakdownTask.cxx:50 AtlHistFactoryBreakdownTask.cxx:51 AtlHistFactoryBreakdownTask.cxx:52 AtlHistFactoryBreakdownTask.cxx:53 AtlHistFactoryBreakdownTask.cxx:54 AtlHistFactoryBreakdownTask.cxx:55 AtlHistFactoryBreakdownTask.cxx:56 AtlHistFactoryBreakdownTask.cxx:57 AtlHistFactoryBreakdownTask.cxx:58 AtlHistFactoryBreakdownTask.cxx:59 AtlHistFactoryBreakdownTask.cxx:60 AtlHistFactoryBreakdownTask.cxx:61 AtlHistFactoryBreakdownTask.cxx:62 AtlHistFactoryBreakdownTask.cxx:63 AtlHistFactoryBreakdownTask.cxx:64 AtlHistFactoryBreakdownTask.cxx:65 AtlHistFactoryBreakdownTask.cxx:66 AtlHistFactoryBreakdownTask.cxx:67 AtlHistFactoryBreakdownTask.cxx:68 AtlHistFactoryBreakdownTask.cxx:69 AtlHistFactoryBreakdownTask.cxx:70 AtlHistFactoryBreakdownTask.cxx:71 AtlHistFactoryBreakdownTask.cxx:72 AtlHistFactoryBreakdownTask.cxx:73 AtlHistFactoryBreakdownTask.cxx:74 AtlHistFactoryBreakdownTask.cxx:75 AtlHistFactoryBreakdownTask.cxx:76 AtlHistFactoryBreakdownTask.cxx:77 AtlHistFactoryBreakdownTask.cxx:78 AtlHistFactoryBreakdownTask.cxx:79 AtlHistFactoryBreakdownTask.cxx:80 AtlHistFactoryBreakdownTask.cxx:81 AtlHistFactoryBreakdownTask.cxx:82 AtlHistFactoryBreakdownTask.cxx:83 AtlHistFactoryBreakdownTask.cxx:84 AtlHistFactoryBreakdownTask.cxx:85 AtlHistFactoryBreakdownTask.cxx:86 AtlHistFactoryBreakdownTask.cxx:87 AtlHistFactoryBreakdownTask.cxx:88 AtlHistFactoryBreakdownTask.cxx:89 AtlHistFactoryBreakdownTask.cxx:90 AtlHistFactoryBreakdownTask.cxx:91 AtlHistFactoryBreakdownTask.cxx:92 AtlHistFactoryBreakdownTask.cxx:93 AtlHistFactoryBreakdownTask.cxx:94 AtlHistFactoryBreakdownTask.cxx:95 AtlHistFactoryBreakdownTask.cxx:96 AtlHistFactoryBreakdownTask.cxx:97 AtlHistFactoryBreakdownTask.cxx:98 AtlHistFactoryBreakdownTask.cxx:99 AtlHistFactoryBreakdownTask.cxx:100 AtlHistFactoryBreakdownTask.cxx:101 AtlHistFactoryBreakdownTask.cxx:102 AtlHistFactoryBreakdownTask.cxx:103 AtlHistFactoryBreakdownTask.cxx:104 AtlHistFactoryBreakdownTask.cxx:105 AtlHistFactoryBreakdownTask.cxx:106 AtlHistFactoryBreakdownTask.cxx:107 AtlHistFactoryBreakdownTask.cxx:108 AtlHistFactoryBreakdownTask.cxx:109 AtlHistFactoryBreakdownTask.cxx:110 AtlHistFactoryBreakdownTask.cxx:111 AtlHistFactoryBreakdownTask.cxx:112 AtlHistFactoryBreakdownTask.cxx:113 AtlHistFactoryBreakdownTask.cxx:114 AtlHistFactoryBreakdownTask.cxx:115 AtlHistFactoryBreakdownTask.cxx:116 AtlHistFactoryBreakdownTask.cxx:117 AtlHistFactoryBreakdownTask.cxx:118 AtlHistFactoryBreakdownTask.cxx:119 AtlHistFactoryBreakdownTask.cxx:120 AtlHistFactoryBreakdownTask.cxx:121 AtlHistFactoryBreakdownTask.cxx:122 AtlHistFactoryBreakdownTask.cxx:123 AtlHistFactoryBreakdownTask.cxx:124 AtlHistFactoryBreakdownTask.cxx:125 AtlHistFactoryBreakdownTask.cxx:126 AtlHistFactoryBreakdownTask.cxx:127 AtlHistFactoryBreakdownTask.cxx:128 AtlHistFactoryBreakdownTask.cxx:129 AtlHistFactoryBreakdownTask.cxx:130 AtlHistFactoryBreakdownTask.cxx:131 AtlHistFactoryBreakdownTask.cxx:132 AtlHistFactoryBreakdownTask.cxx:133 AtlHistFactoryBreakdownTask.cxx:134 AtlHistFactoryBreakdownTask.cxx:135 AtlHistFactoryBreakdownTask.cxx:136 AtlHistFactoryBreakdownTask.cxx:137 AtlHistFactoryBreakdownTask.cxx:138 AtlHistFactoryBreakdownTask.cxx:139 AtlHistFactoryBreakdownTask.cxx:140 AtlHistFactoryBreakdownTask.cxx:141 AtlHistFactoryBreakdownTask.cxx:142 AtlHistFactoryBreakdownTask.cxx:143 AtlHistFactoryBreakdownTask.cxx:144 AtlHistFactoryBreakdownTask.cxx:145 AtlHistFactoryBreakdownTask.cxx:146 AtlHistFactoryBreakdownTask.cxx:147 AtlHistFactoryBreakdownTask.cxx:148 AtlHistFactoryBreakdownTask.cxx:149 AtlHistFactoryBreakdownTask.cxx:150 AtlHistFactoryBreakdownTask.cxx:151 AtlHistFactoryBreakdownTask.cxx:152 AtlHistFactoryBreakdownTask.cxx:153 AtlHistFactoryBreakdownTask.cxx:154 AtlHistFactoryBreakdownTask.cxx:155 AtlHistFactoryBreakdownTask.cxx:156 AtlHistFactoryBreakdownTask.cxx:157 AtlHistFactoryBreakdownTask.cxx:158 AtlHistFactoryBreakdownTask.cxx:159 AtlHistFactoryBreakdownTask.cxx:160 AtlHistFactoryBreakdownTask.cxx:161 AtlHistFactoryBreakdownTask.cxx:162 AtlHistFactoryBreakdownTask.cxx:163 AtlHistFactoryBreakdownTask.cxx:164 AtlHistFactoryBreakdownTask.cxx:165 AtlHistFactoryBreakdownTask.cxx:166 AtlHistFactoryBreakdownTask.cxx:167 AtlHistFactoryBreakdownTask.cxx:168 AtlHistFactoryBreakdownTask.cxx:169 AtlHistFactoryBreakdownTask.cxx:170 AtlHistFactoryBreakdownTask.cxx:171 AtlHistFactoryBreakdownTask.cxx:172 AtlHistFactoryBreakdownTask.cxx:173 AtlHistFactoryBreakdownTask.cxx:174 AtlHistFactoryBreakdownTask.cxx:175 AtlHistFactoryBreakdownTask.cxx:176 AtlHistFactoryBreakdownTask.cxx:177 AtlHistFactoryBreakdownTask.cxx:178 AtlHistFactoryBreakdownTask.cxx:179 AtlHistFactoryBreakdownTask.cxx:180 AtlHistFactoryBreakdownTask.cxx:181 AtlHistFactoryBreakdownTask.cxx:182 AtlHistFactoryBreakdownTask.cxx:183 AtlHistFactoryBreakdownTask.cxx:184 AtlHistFactoryBreakdownTask.cxx:185 AtlHistFactoryBreakdownTask.cxx:186