//____________________________________________________________________
//
// Class for one sided systematic
//
// One sided systematics are symmetrized around the nominal case. Two
// modes are available:
//
// - FullDiff: 	up/down = nom +- (syst-nom)
// - HalfDiff: 	up/down = nom +- (syst-nom)/2.
//
// 'syst' corresponds to the systematic histogram.
//
// Alternative method:
// - compare with a different nominal histogram
// 
//  
// Author: Soeren Stamm <mailto: stamm@physik.hu-berlin.de>
// Update: $Id: AtlHistFactorySystOneSided.cxx,v 1.5 2016/04/19 07:52:22 stamm Exp $
// Copyright: 2015 (C) Soeren Stamm
//
#ifndef ATLAS_AtlHistFactorySystOneSided
#include <AtlHistFactorySystOneSided.h>
#endif
#include <TFile.h>
#include <HepDataMCPlot.h>

#ifndef __CINT__
ClassImp(AtlHistFactorySystOneSided);
#endif

//____________________________________________________________________

AtlHistFactorySystOneSided::AtlHistFactorySystOneSided() {
    //
    // Default constructor
    //
}

//____________________________________________________________________

AtlHistFactorySystOneSided::AtlHistFactorySystOneSided(const char* systname,
						       const char *systtitle,
						       AtlTopLevelAnalysis::ESystematic Syst,
						       ESymmetryMode Mode,
						       Bool_t useShape) :
    AtlHistFactorySystematic(systname, systtitle, useShape) {
    //
    // Default constructor
    //
    fSyst    = Syst;
    fNominal = AtlTopLevelAnalysis::kNOMINAL;
    fSystNom = AtlTopLevelAnalysis::kNOMINAL;
    fSymMode = Mode;

    fPlotterFileSyst = 0;
    fPlotterFileSystNom = 0;
    fPlotterFileNom  = 0;
    
    fHistsSyst = 0;
    fHistsNom  = 0;
    fHistsSystNom = 0;
}

//____________________________________________________________________

AtlHistFactorySystOneSided::~AtlHistFactorySystOneSided() {
    //
    // Default destructor
    //
    if ( fPlotterFileSyst != 0 ) delete fPlotterFileSyst;
    if ( fPlotterFileSystNom != 0 ) delete fPlotterFileSystNom;
    if ( fPlotterFileNom  != 0 ) delete fPlotterFileNom;
    
    if ( fHistsSyst != 0 ) {
	// fHistsSyst->Delete();
	delete fHistsSyst;
    }
    if ( fHistsSystNom != 0 ) {
	// fHistsSystNom->Delete();
	delete fHistsSystNom;
    }
    if ( fHistsNom != 0 ) {
	// fHistsNom->Delete();
	delete fHistsNom;
    }    
}

//____________________________________________________________________

void AtlHistFactorySystOneSided::Initialize(const char* BaseDir,
					    const char* scheme) {
    //
    // Initialize for MCPlotter files
    //
    // Set the MCPlotter files for the systematic and nominal.
    //
    // The file directory is
    // 'BaseDir' + 'systname' + "%s/MCPlotter.root"
    //
    // Get the list of templates from the HepDataMCPlots
    //
    
    if ( fPlotterFileSyst != 0 ) delete fPlotterFileSyst;
    fPlotterFileSyst = TFile::Open(Form("%s/%s/%s/MCPlotter.root",
					BaseDir,
					AtlTopLevelAnalysis::fgSystematicNames[fSyst],
					scheme));
    
    if ( fNominal != fSystNom ) {
	if ( fPlotterFileSystNom != 0 ) delete fPlotterFileSystNom;
	fPlotterFileSystNom = TFile::Open(Form("%s/%s/%s/MCPlotter.root",
					       BaseDir,
					       AtlTopLevelAnalysis::fgSystematicNames[fSystNom],
					       scheme));
	if ( fPlotterFileSystNom == 0 ) {
	    Error("Initialize",
		  "Could not find MCPlotter files. Abort!");
	    gSystem->Abort();
	}
    }
    
    if ( fPlotterFileNom != 0 ) delete fPlotterFileNom;
    fPlotterFileNom = TFile::Open(Form("%s/%s/%s/MCPlotter.root",
				       BaseDir,
				       AtlTopLevelAnalysis::fgSystematicNames[fNominal],
				       scheme));

    if ( fPlotterFileSyst == 0 || fPlotterFileNom == 0 ) {
	Error("Initialize",
	      "Could not find MCPlotter files. Abort!");
	gSystem->Abort();
    }

    if ( fDiscriminant == 0 ) {
	Error("Initialize",
	      "Discriminant not set. Please use SetDiscriminant(..). Abort!");
	gSystem->Abort();
    }	
    
    HepDataMCPlot *HepSyst = (HepDataMCPlot*) fPlotterFileSyst->Get(fDiscriminant->Data());
    HepDataMCPlot *HepNom = (HepDataMCPlot*) fPlotterFileNom->Get(fDiscriminant->Data());

    HepDataMCPlot *HepSystNom = 0;
    if ( fSystNom != fNominal ) {
	HepSystNom = (HepDataMCPlot*) fPlotterFileSystNom->Get(fDiscriminant->Data());
	if ( HepSystNom == 0 ) {
	    Error("Initialize",
		  "Could not find discriminant '%s' in file.",
		  fDiscriminant->Data());
	    Error("Initialize", "File is:\n%s",
		  fPlotterFileSystNom->GetName());
	    gSystem->Abort();
	}
	fHistsSystNom = HepSystNom->GetListOfMCTemplates(AtlTopLevelAnalysis::fgSystematicNames[fSystNom]);
    }
    
    if ( HepSyst == 0 || HepNom == 0 ) {
	Error("Initialize",
	      "Could not find discriminant '%s' in file.",
	      fDiscriminant->Data());
	Error("Initialize", "Files are:\n%s\n%s",
	      fPlotterFileSyst->GetName(),
	      fPlotterFileNom->GetName());
	gSystem->Abort();
    }

    fHistsSyst = HepSyst->GetListOfMCTemplates(AtlTopLevelAnalysis::fgSystematicNames[fSyst]);
    fHistsNom  = HepNom->GetListOfMCTemplates(AtlTopLevelAnalysis::fgSystematicNames[fNominal]);
}

//____________________________________________________________________

void AtlHistFactorySystOneSided::GetHistsFromFile(const char* process) {
    //
    // Change the process and load the corresponding informations
    // into the class data members.
    //
    
    // we get the histos directly from the template file
    fHistUp = (TH1*) fTemplateFile->Get(Form("%s_%s_up",
					     process,
					     AtlTopLevelAnalysis::fgSystematicNames[fSyst]));
    fHistDown = (TH1*) fTemplateFile->Get(Form("%s_%s_down",
					       process,
					       AtlTopLevelAnalysis::fgSystematicNames[fSyst]));

    if ( fHistUp == 0 ) {
	Error("GetHistsFromFile",
	      "Could not find up histogram for systematic '%s'",
	      AtlTopLevelAnalysis::fgSystematicNames[fSyst]);
    }
    if ( fHistDown == 0 ) {
	Error("GetHistsFromFile",
	      "Could not find down histogram for systematic '%s'",
	      AtlTopLevelAnalysis::fgSystematicNames[fSyst]);
    }
}

//____________________________________________________________________

void AtlHistFactorySystOneSided::ComputeUpDownVariation(const char* process) {
    //
    // Compute the up var. and down variation for this systematic pair
    //

    TH1 *h_syst = (TH1*) fHistsSyst->FindObject(Form("%s_%s",
						     process,
						     AtlTopLevelAnalysis::fgSystematicNames[fSyst]));
    TH1 *h_nom  = (TH1*) fHistsNom->FindObject(Form("%s_%s",
						    process,
						    AtlTopLevelAnalysis::fgSystematicNames[fNominal]));
    // Symmetry mode: full difference
    if ( fSymMode == kFullDiff ) {
	if ( fSystNom != fNominal ) {
	    TH1 *h_systnom = (TH1*) fHistsSystNom->FindObject(Form("%s_%s",
								   process,
								   AtlTopLevelAnalysis::fgSystematicNames[fSystNom]));
	    // Use different nominal sample

	    // Syst variation is:
	    // up/down = nom +- (syst-nom_syst)
	    // --> up   = nom + syst - nom_syst
	    // --> down = nom + nom_syst - syst

	    fHistUp   = (TH1*) h_nom->Clone(Form("%s_%s_up",
						 process,
						 AtlTopLevelAnalysis::fgSystematicNames[fSyst]));
	    fHistDown = (TH1*) h_nom->Clone(Form("%s_%s_down",
						 process,
						 AtlTopLevelAnalysis::fgSystematicNames[fSyst]));

	    fHistUp->Add(h_syst, +1.);
	    fHistUp->Add(h_systnom, -1.);

	    fHistDown->Add(h_syst, -1.);
	    fHistDown->Add(h_systnom, +1.);

	} else {
	    // up/down = nom +- (syst-nom)
	    // --> up   = syst
	    // --> down = 2.*nom - syst
	    
	    // only down needs to be computed
	    fHistUp   = (TH1*) h_syst->Clone(Form("%s_%s_up",
						  process,
						  AtlTopLevelAnalysis::fgSystematicNames[fSyst]));
	    fHistDown = (TH1*) h_nom->Clone(Form("%s_%s_down",
						 process,
						 AtlTopLevelAnalysis::fgSystematicNames[fSyst]));
	    fHistDown->Scale(2.);
	    fHistDown->Add(h_syst, -1.);
	}
    } else if ( fSymMode == kHalfDiff ) {
	if ( fSystNom != fNominal ) {
	    // Use different nominal sample

	    // Syst variation is:
	    // up/down = nom +- (syst-nom_syst)
	    // --> up   = nom + syst - nom_syst
	    // --> down = nom + nom_syst - syst
	    Error("ComputeUpDownVariation", "Not supported. Abort!");
	    gSystem->Abort();
	} else {
	    // up/down = nom +- (syst-nom)/2.
	    // --> up   = 0.5*(nom + syst)
	    // --> down = 1.5*nom - 0.5*syst
	    
	    fHistUp   = (TH1*) h_syst->Clone(Form("%s_%s_up",
						  process,
						  AtlTopLevelAnalysis::fgSystematicNames[fSyst]));
	    fHistUp->Add(h_nom);
	    fHistUp->Scale(0.5);
	    
	    fHistDown = (TH1*) h_nom->Clone(Form("%s_%s_down",
						 process,
						 AtlTopLevelAnalysis::fgSystematicNames[fSyst]));
	    fHistDown->Scale(1.5);
	    fHistDown->Add(h_syst, -0.5);
	}
    }
}

//____________________________________________________________________

void AtlHistFactorySystOneSided::Clear(Option_t *option) {
    //
    // Close MCPlotter files
    // - Do not close the template file. The class does not own this
    //   file. The owner of this file is responsible of closing it.
    //

    if ( fPlotterFileSyst != 0 ) {
	fPlotterFileSyst->Close();
	delete fPlotterFileSyst;
	fPlotterFileSyst = 0;
    }

    if ( fPlotterFileNom != 0 ) {
	fPlotterFileNom->Close();
	delete fPlotterFileNom;
	fPlotterFileNom = 0;
    }

    if ( fSystNom != fNominal ) {
        if ( fPlotterFileSystNom != 0 ) {
	    fPlotterFileSystNom->Close();
	    delete fPlotterFileSystNom;
	    fPlotterFileSystNom = 0;
	}
	if ( fHistsSystNom != 0 ) {
	    // fHistsSystNom->Delete();
	    delete fHistsSystNom;
	    fHistsSystNom = 0;
	}
    }
    
    if ( fHistsSyst != 0 ) {
	// fHistsSyst->Delete();
	delete fHistsSyst;
	fHistsSyst = 0;
    }

    if ( fHistsNom != 0 ) {
	// fHistsNom->Delete();
	delete fHistsNom;
	fHistsNom = 0;
    }

    fHistUp = 0;
    delete fHistUp;
    fHistDown = 0;
    delete fHistDown;
}
 AtlHistFactorySystOneSided.cxx:1
 AtlHistFactorySystOneSided.cxx:2
 AtlHistFactorySystOneSided.cxx:3
 AtlHistFactorySystOneSided.cxx:4
 AtlHistFactorySystOneSided.cxx:5
 AtlHistFactorySystOneSided.cxx:6
 AtlHistFactorySystOneSided.cxx:7
 AtlHistFactorySystOneSided.cxx:8
 AtlHistFactorySystOneSided.cxx:9
 AtlHistFactorySystOneSided.cxx:10
 AtlHistFactorySystOneSided.cxx:11
 AtlHistFactorySystOneSided.cxx:12
 AtlHistFactorySystOneSided.cxx:13
 AtlHistFactorySystOneSided.cxx:14
 AtlHistFactorySystOneSided.cxx:15
 AtlHistFactorySystOneSided.cxx:16
 AtlHistFactorySystOneSided.cxx:17
 AtlHistFactorySystOneSided.cxx:18
 AtlHistFactorySystOneSided.cxx:19
 AtlHistFactorySystOneSided.cxx:20
 AtlHistFactorySystOneSided.cxx:21
 AtlHistFactorySystOneSided.cxx:22
 AtlHistFactorySystOneSided.cxx:23
 AtlHistFactorySystOneSided.cxx:24
 AtlHistFactorySystOneSided.cxx:25
 AtlHistFactorySystOneSided.cxx:26
 AtlHistFactorySystOneSided.cxx:27
 AtlHistFactorySystOneSided.cxx:28
 AtlHistFactorySystOneSided.cxx:29
 AtlHistFactorySystOneSided.cxx:30
 AtlHistFactorySystOneSided.cxx:31
 AtlHistFactorySystOneSided.cxx:32
 AtlHistFactorySystOneSided.cxx:33
 AtlHistFactorySystOneSided.cxx:34
 AtlHistFactorySystOneSided.cxx:35
 AtlHistFactorySystOneSided.cxx:36
 AtlHistFactorySystOneSided.cxx:37
 AtlHistFactorySystOneSided.cxx:38
 AtlHistFactorySystOneSided.cxx:39
 AtlHistFactorySystOneSided.cxx:40
 AtlHistFactorySystOneSided.cxx:41
 AtlHistFactorySystOneSided.cxx:42
 AtlHistFactorySystOneSided.cxx:43
 AtlHistFactorySystOneSided.cxx:44
 AtlHistFactorySystOneSided.cxx:45
 AtlHistFactorySystOneSided.cxx:46
 AtlHistFactorySystOneSided.cxx:47
 AtlHistFactorySystOneSided.cxx:48
 AtlHistFactorySystOneSided.cxx:49
 AtlHistFactorySystOneSided.cxx:50
 AtlHistFactorySystOneSided.cxx:51
 AtlHistFactorySystOneSided.cxx:52
 AtlHistFactorySystOneSided.cxx:53
 AtlHistFactorySystOneSided.cxx:54
 AtlHistFactorySystOneSided.cxx:55
 AtlHistFactorySystOneSided.cxx:56
 AtlHistFactorySystOneSided.cxx:57
 AtlHistFactorySystOneSided.cxx:58
 AtlHistFactorySystOneSided.cxx:59
 AtlHistFactorySystOneSided.cxx:60
 AtlHistFactorySystOneSided.cxx:61
 AtlHistFactorySystOneSided.cxx:62
 AtlHistFactorySystOneSided.cxx:63
 AtlHistFactorySystOneSided.cxx:64
 AtlHistFactorySystOneSided.cxx:65
 AtlHistFactorySystOneSided.cxx:66
 AtlHistFactorySystOneSided.cxx:67
 AtlHistFactorySystOneSided.cxx:68
 AtlHistFactorySystOneSided.cxx:69
 AtlHistFactorySystOneSided.cxx:70
 AtlHistFactorySystOneSided.cxx:71
 AtlHistFactorySystOneSided.cxx:72
 AtlHistFactorySystOneSided.cxx:73
 AtlHistFactorySystOneSided.cxx:74
 AtlHistFactorySystOneSided.cxx:75
 AtlHistFactorySystOneSided.cxx:76
 AtlHistFactorySystOneSided.cxx:77
 AtlHistFactorySystOneSided.cxx:78
 AtlHistFactorySystOneSided.cxx:79
 AtlHistFactorySystOneSided.cxx:80
 AtlHistFactorySystOneSided.cxx:81
 AtlHistFactorySystOneSided.cxx:82
 AtlHistFactorySystOneSided.cxx:83
 AtlHistFactorySystOneSided.cxx:84
 AtlHistFactorySystOneSided.cxx:85
 AtlHistFactorySystOneSided.cxx:86
 AtlHistFactorySystOneSided.cxx:87
 AtlHistFactorySystOneSided.cxx:88
 AtlHistFactorySystOneSided.cxx:89
 AtlHistFactorySystOneSided.cxx:90
 AtlHistFactorySystOneSided.cxx:91
 AtlHistFactorySystOneSided.cxx:92
 AtlHistFactorySystOneSided.cxx:93
 AtlHistFactorySystOneSided.cxx:94
 AtlHistFactorySystOneSided.cxx:95
 AtlHistFactorySystOneSided.cxx:96
 AtlHistFactorySystOneSided.cxx:97
 AtlHistFactorySystOneSided.cxx:98
 AtlHistFactorySystOneSided.cxx:99
 AtlHistFactorySystOneSided.cxx:100
 AtlHistFactorySystOneSided.cxx:101
 AtlHistFactorySystOneSided.cxx:102
 AtlHistFactorySystOneSided.cxx:103
 AtlHistFactorySystOneSided.cxx:104
 AtlHistFactorySystOneSided.cxx:105
 AtlHistFactorySystOneSided.cxx:106
 AtlHistFactorySystOneSided.cxx:107
 AtlHistFactorySystOneSided.cxx:108
 AtlHistFactorySystOneSided.cxx:109
 AtlHistFactorySystOneSided.cxx:110
 AtlHistFactorySystOneSided.cxx:111
 AtlHistFactorySystOneSided.cxx:112
 AtlHistFactorySystOneSided.cxx:113
 AtlHistFactorySystOneSided.cxx:114
 AtlHistFactorySystOneSided.cxx:115
 AtlHistFactorySystOneSided.cxx:116
 AtlHistFactorySystOneSided.cxx:117
 AtlHistFactorySystOneSided.cxx:118
 AtlHistFactorySystOneSided.cxx:119
 AtlHistFactorySystOneSided.cxx:120
 AtlHistFactorySystOneSided.cxx:121
 AtlHistFactorySystOneSided.cxx:122
 AtlHistFactorySystOneSided.cxx:123
 AtlHistFactorySystOneSided.cxx:124
 AtlHistFactorySystOneSided.cxx:125
 AtlHistFactorySystOneSided.cxx:126
 AtlHistFactorySystOneSided.cxx:127
 AtlHistFactorySystOneSided.cxx:128
 AtlHistFactorySystOneSided.cxx:129
 AtlHistFactorySystOneSided.cxx:130
 AtlHistFactorySystOneSided.cxx:131
 AtlHistFactorySystOneSided.cxx:132
 AtlHistFactorySystOneSided.cxx:133
 AtlHistFactorySystOneSided.cxx:134
 AtlHistFactorySystOneSided.cxx:135
 AtlHistFactorySystOneSided.cxx:136
 AtlHistFactorySystOneSided.cxx:137
 AtlHistFactorySystOneSided.cxx:138
 AtlHistFactorySystOneSided.cxx:139
 AtlHistFactorySystOneSided.cxx:140
 AtlHistFactorySystOneSided.cxx:141
 AtlHistFactorySystOneSided.cxx:142
 AtlHistFactorySystOneSided.cxx:143
 AtlHistFactorySystOneSided.cxx:144
 AtlHistFactorySystOneSided.cxx:145
 AtlHistFactorySystOneSided.cxx:146
 AtlHistFactorySystOneSided.cxx:147
 AtlHistFactorySystOneSided.cxx:148
 AtlHistFactorySystOneSided.cxx:149
 AtlHistFactorySystOneSided.cxx:150
 AtlHistFactorySystOneSided.cxx:151
 AtlHistFactorySystOneSided.cxx:152
 AtlHistFactorySystOneSided.cxx:153
 AtlHistFactorySystOneSided.cxx:154
 AtlHistFactorySystOneSided.cxx:155
 AtlHistFactorySystOneSided.cxx:156
 AtlHistFactorySystOneSided.cxx:157
 AtlHistFactorySystOneSided.cxx:158
 AtlHistFactorySystOneSided.cxx:159
 AtlHistFactorySystOneSided.cxx:160
 AtlHistFactorySystOneSided.cxx:161
 AtlHistFactorySystOneSided.cxx:162
 AtlHistFactorySystOneSided.cxx:163
 AtlHistFactorySystOneSided.cxx:164
 AtlHistFactorySystOneSided.cxx:165
 AtlHistFactorySystOneSided.cxx:166
 AtlHistFactorySystOneSided.cxx:167
 AtlHistFactorySystOneSided.cxx:168
 AtlHistFactorySystOneSided.cxx:169
 AtlHistFactorySystOneSided.cxx:170
 AtlHistFactorySystOneSided.cxx:171
 AtlHistFactorySystOneSided.cxx:172
 AtlHistFactorySystOneSided.cxx:173
 AtlHistFactorySystOneSided.cxx:174
 AtlHistFactorySystOneSided.cxx:175
 AtlHistFactorySystOneSided.cxx:176
 AtlHistFactorySystOneSided.cxx:177
 AtlHistFactorySystOneSided.cxx:178
 AtlHistFactorySystOneSided.cxx:179
 AtlHistFactorySystOneSided.cxx:180
 AtlHistFactorySystOneSided.cxx:181
 AtlHistFactorySystOneSided.cxx:182
 AtlHistFactorySystOneSided.cxx:183
 AtlHistFactorySystOneSided.cxx:184
 AtlHistFactorySystOneSided.cxx:185
 AtlHistFactorySystOneSided.cxx:186
 AtlHistFactorySystOneSided.cxx:187
 AtlHistFactorySystOneSided.cxx:188
 AtlHistFactorySystOneSided.cxx:189
 AtlHistFactorySystOneSided.cxx:190
 AtlHistFactorySystOneSided.cxx:191
 AtlHistFactorySystOneSided.cxx:192
 AtlHistFactorySystOneSided.cxx:193
 AtlHistFactorySystOneSided.cxx:194
 AtlHistFactorySystOneSided.cxx:195
 AtlHistFactorySystOneSided.cxx:196
 AtlHistFactorySystOneSided.cxx:197
 AtlHistFactorySystOneSided.cxx:198
 AtlHistFactorySystOneSided.cxx:199
 AtlHistFactorySystOneSided.cxx:200
 AtlHistFactorySystOneSided.cxx:201
 AtlHistFactorySystOneSided.cxx:202
 AtlHistFactorySystOneSided.cxx:203
 AtlHistFactorySystOneSided.cxx:204
 AtlHistFactorySystOneSided.cxx:205
 AtlHistFactorySystOneSided.cxx:206
 AtlHistFactorySystOneSided.cxx:207
 AtlHistFactorySystOneSided.cxx:208
 AtlHistFactorySystOneSided.cxx:209
 AtlHistFactorySystOneSided.cxx:210
 AtlHistFactorySystOneSided.cxx:211
 AtlHistFactorySystOneSided.cxx:212
 AtlHistFactorySystOneSided.cxx:213
 AtlHistFactorySystOneSided.cxx:214
 AtlHistFactorySystOneSided.cxx:215
 AtlHistFactorySystOneSided.cxx:216
 AtlHistFactorySystOneSided.cxx:217
 AtlHistFactorySystOneSided.cxx:218
 AtlHistFactorySystOneSided.cxx:219
 AtlHistFactorySystOneSided.cxx:220
 AtlHistFactorySystOneSided.cxx:221
 AtlHistFactorySystOneSided.cxx:222
 AtlHistFactorySystOneSided.cxx:223
 AtlHistFactorySystOneSided.cxx:224
 AtlHistFactorySystOneSided.cxx:225
 AtlHistFactorySystOneSided.cxx:226
 AtlHistFactorySystOneSided.cxx:227
 AtlHistFactorySystOneSided.cxx:228
 AtlHistFactorySystOneSided.cxx:229
 AtlHistFactorySystOneSided.cxx:230
 AtlHistFactorySystOneSided.cxx:231
 AtlHistFactorySystOneSided.cxx:232
 AtlHistFactorySystOneSided.cxx:233
 AtlHistFactorySystOneSided.cxx:234
 AtlHistFactorySystOneSided.cxx:235
 AtlHistFactorySystOneSided.cxx:236
 AtlHistFactorySystOneSided.cxx:237
 AtlHistFactorySystOneSided.cxx:238
 AtlHistFactorySystOneSided.cxx:239
 AtlHistFactorySystOneSided.cxx:240
 AtlHistFactorySystOneSided.cxx:241
 AtlHistFactorySystOneSided.cxx:242
 AtlHistFactorySystOneSided.cxx:243
 AtlHistFactorySystOneSided.cxx:244
 AtlHistFactorySystOneSided.cxx:245
 AtlHistFactorySystOneSided.cxx:246
 AtlHistFactorySystOneSided.cxx:247
 AtlHistFactorySystOneSided.cxx:248
 AtlHistFactorySystOneSided.cxx:249
 AtlHistFactorySystOneSided.cxx:250
 AtlHistFactorySystOneSided.cxx:251
 AtlHistFactorySystOneSided.cxx:252
 AtlHistFactorySystOneSided.cxx:253
 AtlHistFactorySystOneSided.cxx:254
 AtlHistFactorySystOneSided.cxx:255
 AtlHistFactorySystOneSided.cxx:256
 AtlHistFactorySystOneSided.cxx:257
 AtlHistFactorySystOneSided.cxx:258
 AtlHistFactorySystOneSided.cxx:259
 AtlHistFactorySystOneSided.cxx:260
 AtlHistFactorySystOneSided.cxx:261
 AtlHistFactorySystOneSided.cxx:262
 AtlHistFactorySystOneSided.cxx:263
 AtlHistFactorySystOneSided.cxx:264
 AtlHistFactorySystOneSided.cxx:265
 AtlHistFactorySystOneSided.cxx:266
 AtlHistFactorySystOneSided.cxx:267
 AtlHistFactorySystOneSided.cxx:268
 AtlHistFactorySystOneSided.cxx:269
 AtlHistFactorySystOneSided.cxx:270
 AtlHistFactorySystOneSided.cxx:271
 AtlHistFactorySystOneSided.cxx:272
 AtlHistFactorySystOneSided.cxx:273
 AtlHistFactorySystOneSided.cxx:274
 AtlHistFactorySystOneSided.cxx:275
 AtlHistFactorySystOneSided.cxx:276
 AtlHistFactorySystOneSided.cxx:277
 AtlHistFactorySystOneSided.cxx:278
 AtlHistFactorySystOneSided.cxx:279
 AtlHistFactorySystOneSided.cxx:280
 AtlHistFactorySystOneSided.cxx:281
 AtlHistFactorySystOneSided.cxx:282
 AtlHistFactorySystOneSided.cxx:283
 AtlHistFactorySystOneSided.cxx:284
 AtlHistFactorySystOneSided.cxx:285
 AtlHistFactorySystOneSided.cxx:286
 AtlHistFactorySystOneSided.cxx:287
 AtlHistFactorySystOneSided.cxx:288
 AtlHistFactorySystOneSided.cxx:289
 AtlHistFactorySystOneSided.cxx:290
 AtlHistFactorySystOneSided.cxx:291
 AtlHistFactorySystOneSided.cxx:292
 AtlHistFactorySystOneSided.cxx:293
 AtlHistFactorySystOneSided.cxx:294
 AtlHistFactorySystOneSided.cxx:295
 AtlHistFactorySystOneSided.cxx:296
 AtlHistFactorySystOneSided.cxx:297
 AtlHistFactorySystOneSided.cxx:298
 AtlHistFactorySystOneSided.cxx:299
 AtlHistFactorySystOneSided.cxx:300
 AtlHistFactorySystOneSided.cxx:301
 AtlHistFactorySystOneSided.cxx:302
 AtlHistFactorySystOneSided.cxx:303
 AtlHistFactorySystOneSided.cxx:304
 AtlHistFactorySystOneSided.cxx:305
 AtlHistFactorySystOneSided.cxx:306
 AtlHistFactorySystOneSided.cxx:307
 AtlHistFactorySystOneSided.cxx:308
 AtlHistFactorySystOneSided.cxx:309
 AtlHistFactorySystOneSided.cxx:310
 AtlHistFactorySystOneSided.cxx:311
 AtlHistFactorySystOneSided.cxx:312
 AtlHistFactorySystOneSided.cxx:313
 AtlHistFactorySystOneSided.cxx:314
 AtlHistFactorySystOneSided.cxx:315
 AtlHistFactorySystOneSided.cxx:316
 AtlHistFactorySystOneSided.cxx:317
 AtlHistFactorySystOneSided.cxx:318
 AtlHistFactorySystOneSided.cxx:319
 AtlHistFactorySystOneSided.cxx:320
 AtlHistFactorySystOneSided.cxx:321
 AtlHistFactorySystOneSided.cxx:322
 AtlHistFactorySystOneSided.cxx:323
 AtlHistFactorySystOneSided.cxx:324
 AtlHistFactorySystOneSided.cxx:325
 AtlHistFactorySystOneSided.cxx:326
 AtlHistFactorySystOneSided.cxx:327
 AtlHistFactorySystOneSided.cxx:328
 AtlHistFactorySystOneSided.cxx:329
 AtlHistFactorySystOneSided.cxx:330
 AtlHistFactorySystOneSided.cxx:331
 AtlHistFactorySystOneSided.cxx:332
 AtlHistFactorySystOneSided.cxx:333