ROOT logo

From $ROOTSYS/tutorials/roostats/StandardHistFactoryPlotsWithCategories.C

/*
StandardHistFactoryPlotsWithCategories

Author: Kyle Cranmer
date: Spring. 2011

This is a standard demo that can be used with any ROOT file 
prepared in the standard way.  You specify:
 - name for input ROOT file
 - name of workspace inside ROOT file that holds model and data
 - name of ModelConfig that specifies details for calculator tools
 - name of dataset 

With default parameters the macro will attempt to run the 
standard hist2workspace example and read the ROOT file
that it produces.

The macro will scan through all the categories in a simPdf find the corresponding
observable.  For each cateogry, it will loop through each of the nuisance parameters
and plot 
   - the data 
   - the nominal model (blue) 
   - the +Nsigma (red)
   - the -Nsigma (green)

You can specify how many sigma to vary by changing nSigmaToVary.
You can also change the signal rate by changing muVal.

The script produces a lot plots, you can merge them by doing:
gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=merged.pdf `ls *pdf`
*/

#include "TFile.h"
#include "TROOT.h"
#include "TCanvas.h"
#include "TList.h"
#include "TMath.h"
#include "RooWorkspace.h"
#include "RooAbsData.h"

#include "RooStats/ModelConfig.h"
#include "RooStats/ProfileInspector.h"

using namespace RooFit;
using namespace RooStats;

void StandardHistFactoryPlotsWithCategories(const char* infile = "",
		      const char* workspaceName = "combined",
		      const char* modelConfigName = "ModelConfig",
		      const char* dataName = "obsData"){


  double nSigmaToVary=5.;
  double muVal=0;
  bool doFit=false;

  /////////////////////////////////////////////////////////////
  // First part is just to access a user-defined file 
  // or create the standard example file if it doesn't exist
  ////////////////////////////////////////////////////////////
  const char* filename = "";
  if (!strcmp(infile,""))
    filename = "results/example_combined_GammaExample_model.root";
  else
    filename = infile;
  // Check if example input file exists
  TFile *file = TFile::Open(filename);

  // if input file was specified byt not found, quit
  if(!file && strcmp(infile,"")){
    cout <<"file not found" << endl;
    return;
  } 

  // if default file not found, try to create it
  if(!file ){
    // Normally this would be run on the command line
    cout <<"will run standard hist2workspace example"<<endl;
    gROOT->ProcessLine(".! prepareHistFactory .");
    gROOT->ProcessLine(".! hist2workspace config/example.xml");
    cout <<"\n\n---------------------"<<endl;
    cout <<"Done creating example input"<<endl;
    cout <<"---------------------\n\n"<<endl;
  }

  // now try to access the file again
  file = TFile::Open(filename);
  if(!file){
    // if it is still not there, then we can't continue
    cout << "Not able to run hist2workspace to create example input" <<endl;
    return;
  }

  
  /////////////////////////////////////////////////////////////
  // Tutorial starts here
  ////////////////////////////////////////////////////////////

  // get the workspace out of the file
  RooWorkspace* w = (RooWorkspace*) file->Get(workspaceName);
  if(!w){
    cout <<"workspace not found" << endl;
    return;
  }

  // get the modelConfig out of the file
  ModelConfig* mc = (ModelConfig*) w->obj(modelConfigName);

  // get the modelConfig out of the file
  RooAbsData* data = w->data(dataName);

  // make sure ingredients are found
  if(!data || !mc){
    w->Print();
    cout << "data or ModelConfig was not found" <<endl;
    return;
  }

  //////////////////////////////////////////////
  // now use the profile inspector

  RooRealVar* obs = (RooRealVar*)mc->GetObservables()->first();
  TList* list = new TList();

 
  RooRealVar * firstPOI = dynamic_cast<RooRealVar*>(mc->GetParametersOfInterest()->first());

  firstPOI->setVal(muVal);
  //  firstPOI->setConstant();
  if(doFit){
    mc->GetPdf()->fitTo(*data);
  }

  ////////////////////////////////////////
  ////////////////////////////////////////
  ////////////////////////////////////////

  mc->GetNuisanceParameters()->Print("v");
  int  nPlotsMax = 1000;
  cout <<" check expectedData by category"<<endl;
  RooDataSet* simData=NULL;
  RooSimultaneous* simPdf = NULL;
  if(strcmp(mc->GetPdf()->ClassName(),"RooSimultaneous")==0){
    cout <<"Is a simultaneous PDF"<<endl;
    simPdf = (RooSimultaneous)(mc->GetPdf());
  } else {
    cout <<"Is not a simultaneous PDF"<<endl;
  }



  if(doFit) {
    RooCategory* channelCat = (RooCategory*) (&simPdf->indexCat());
    TIterator* iter = channelCat->typeIterator() ;
    RooCatType* tt = NULL;
    tt=(RooCatType*) iter->Next();  
    RooAbsPdf* pdftmp = ((RooSimultaneous*)mc->GetPdf())->getPdf(tt->GetName()) ;
    RooArgSet* obstmp = pdftmp->getObservables(*mc->GetObservables()) ;
    obs = ((RooRealVar*)obstmp->first());
    RooPlot* frame = obs->frame();
    cout <<Form("%s==%s::%s",channelCat->GetName(),channelCat->GetName(),tt->GetName())<<endl;
    cout << tt->GetName() << " " << channelCat->getLabel() <<endl;
    data->plotOn(frame,MarkerSize(1),Cut(Form("%s==%s::%s",channelCat->GetName(),channelCat->GetName(),tt->GetName())),DataError(RooAbsData::None));
    
    Double_t normCount = data->sumEntries(Form("%s==%s::%s",channelCat->GetName(),channelCat->GetName(),tt->GetName())) ;
    
    pdftmp->plotOn(frame,LineWidth(2.),Normalization(normCount,RooAbsReal::NumEvent)) ;
    frame->Draw();
    cout <<"expected events = " << mc->GetPdf()->expectedEvents(*data->get()) <<endl;
    return;
  }



  int nPlots=0;
  if(!simPdf){

    TIterator* it = mc->GetNuisanceParameters()->createIterator();
    RooRealVar* var = NULL;
    while(var = (RooRealVar*) it->Next()){
      RooPlot* frame = obs->frame();
      frame->SetYTitle(var->GetName());
      data->plotOn(frame,MarkerSize(1));
      var->setVal(0);
      mc->GetPdf()->plotOn(frame,LineWidth(1.));
      var->setVal(1);
      mc->GetPdf()->plotOn(frame,LineColor(kRed),LineStyle(kDashed),LineWidth(1));
      var->setVal(-1);
      mc->GetPdf()->plotOn(frame,LineColor(kGreen),LineStyle(kDashed),LineWidth(1));
      list->Add(frame);
      var->setVal(0);
    }
    
  
  } else {
    RooCategory* channelCat = (RooCategory*) (&simPdf->indexCat());
    //    TIterator* iter = simPdf->indexCat().typeIterator() ;
    TIterator* iter = channelCat->typeIterator() ;
    RooCatType* tt = NULL;
    while(nPlots<nPlotsMax && (tt=(RooCatType*) iter->Next())) {

      cout << "on type " << tt->GetName() << " " << endl;
      // Get pdf associated with state from simpdf
      RooAbsPdf* pdftmp = simPdf->getPdf(tt->GetName()) ;
	
      // Generate observables defined by the pdf associated with this state
      RooArgSet* obstmp = pdftmp->getObservables(*mc->GetObservables()) ;
      //      obstmp->Print();


      obs = ((RooRealVar*)obstmp->first());

      TIterator* it = mc->GetNuisanceParameters()->createIterator();
      RooRealVar* var = NULL;
      while(nPlots<nPlotsMax && (var = (RooRealVar*) it->Next())){
	TCanvas* c2 = new TCanvas("c2");
	RooPlot* frame = obs->frame();
	frame->SetName(Form("frame%d",nPlots));
	frame->SetYTitle(var->GetName());

	cout <<Form("%s==%s::%s",channelCat->GetName(),channelCat->GetName(),tt->GetName())<<endl;
	cout << tt->GetName() << " " << channelCat->getLabel() <<endl;
	data->plotOn(frame,MarkerSize(1),Cut(Form("%s==%s::%s",channelCat->GetName(),channelCat->GetName(),tt->GetName())),DataError(RooAbsData::None));

	Double_t normCount = data->sumEntries(Form("%s==%s::%s",channelCat->GetName(),channelCat->GetName(),tt->GetName())) ;
	  
	if(strcmp(var->GetName(),"Lumi")==0){
	  cout <<"working on lumi"<<endl;
	  var->setVal(combined->var("nominalLumi")->getVal());
	  var->Print();
	} else{
	  var->setVal(0);
	}
	//	w->allVars().Print("v");
	//	mc->GetNuisanceParameters()->Print("v");
	//	pdftmp->plotOn(frame,LineWidth(2.));
	//	mc->GetPdf()->plotOn(frame,LineWidth(2.),Slice(*channelCat,tt->GetName()),ProjWData(*data));
	//pdftmp->plotOn(frame,LineWidth(2.),Slice(*channelCat,tt->GetName()),ProjWData(*data));
	normCount = pdftmp->expectedEvents(*obs);
	pdftmp->plotOn(frame,LineWidth(2.),Normalization(normCount,RooAbsReal::NumEvent)) ;

	if(strcmp(var->GetName(),"Lumi")==0){
	  cout <<"working on lumi"<<endl;
	  var->setVal(combined->var("nominalLumi")->getVal()+0.05);
	  var->Print();
	} else{
	  var->setVal(nSigmaToVary);
	}
	//	pdftmp->plotOn(frame,LineColor(kRed),LineStyle(kDashed),LineWidth(2));
	//	mc->GetPdf()->plotOn(frame,LineColor(kRed),LineStyle(kDashed),LineWidth(2.),Slice(*channelCat,tt->GetName()),ProjWData(*data));
	//pdftmp->plotOn(frame,LineColor(kRed),LineStyle(kDashed),LineWidth(2.),Slice(*channelCat,tt->GetName()),ProjWData(*data));
	normCount = pdftmp->expectedEvents(*obs);
	pdftmp->plotOn(frame,LineWidth(2.),LineColor(kRed),LineStyle(kDashed),Normalization(normCount,RooAbsReal::NumEvent)) ;

	if(strcmp(var->GetName(),"Lumi")==0){
	  cout <<"working on lumi"<<endl;
	  var->setVal(combined->var("nominalLumi")->getVal()-0.05);
	  var->Print();
	} else{
	  var->setVal(-nSigmaToVary);
	}
	//	pdftmp->plotOn(frame,LineColor(kGreen),LineStyle(kDashed),LineWidth(2));
	//	mc->GetPdf()->plotOn(frame,LineColor(kGreen),LineStyle(kDashed),LineWidth(2),Slice(*channelCat,tt->GetName()),ProjWData(*data));
	//pdftmp->plotOn(frame,LineColor(kGreen),LineStyle(kDashed),LineWidth(2),Slice(*channelCat,tt->GetName()),ProjWData(*data));
	normCount = pdftmp->expectedEvents(*obs);
	pdftmp->plotOn(frame,LineWidth(2.),LineColor(kGreen),LineStyle(kDashed),Normalization(normCount,RooAbsReal::NumEvent)) ;



	// set them back to normal
	if(strcmp(var->GetName(),"Lumi")==0){
	  cout <<"working on lumi"<<endl;
	  var->setVal(combined->var("nominalLumi")->getVal());
	  var->Print();
	} else{
	  var->setVal(0);
	}

	list->Add(frame);

	// quit making plots
	++nPlots;

	frame->Draw();
	c2->SaveAs(Form("%s_%s_%s.pdf",tt->GetName(),obs->GetName(),var->GetName()));
	delete c2;
      }
    }
  }



  ////////////////////////////////////////
  ////////////////////////////////////////
  ////////////////////////////////////////

    // now make plots
    TCanvas* c1 = new TCanvas("c1","ProfileInspectorDemo",800,200);
    if(list->GetSize()>4){
      double n = list->GetSize();
      int nx = (int)sqrt(n) ;
      int ny = TMath::CeilNint(n/nx);
      nx = TMath::CeilNint( sqrt(n) );
      c1->Divide(ny,nx);
    } else
      c1->Divide(list->GetSize());
    for(int i=0; i<list->GetSize(); ++i){
      c1->cd(i+1);
      list->At(i)->Draw();
    }
 



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