ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/cbrown/Development/Plotting/Modules/ExclusionPlot.C
(Generate patch)

Comparing UserCode/cbrown/Development/Plotting/Modules/ExclusionPlot.C (file contents):
Revision 1.9 by buchmann, Mon Apr 30 08:39:44 2012 UTC vs.
Revision 1.11 by buchmann, Mon May 14 07:07:03 2012 UTC

# Line 266 | Line 266 | void produce_extensive_plots(TH2F *xsec,
266    stringstream partial;
267    partial << "Limits/exclusion__" << limits->GetName();
268    fill_with_text(exclline,excllined3,excllinet3,ca->cd(4),scantype);
269 <  CompleteSave(ca,partial.str());
269 > //  CompleteSave(ca,partial.str());
270  
271    ca->cd(5);
272    (hardlimit(rellimits))->Draw("COL");
273    exclline->Draw("same");
274 +  TText *a = write_title("Exclusion shape for 3x#sigma_{ref}");
275 +  a->Draw();
276    ca->cd(6);
277    (hardlimit(rellimitst3))->Draw("COL");
278    excllinet3->Draw("same");
279 +  TText *b = write_title("Exclusion shape for #sigma_{ref}");
280 +  b->Draw();
281    ca->cd(7);
282    (hardlimit(rellimitsd3))->Draw("COLZ");
283 +  TText *c = write_title("Exclusion shape for #sigma_{ref}/3");
284 +  c->Draw();
285    excllined3->Draw("same");
286    
287    CompleteSave(ca,partial.str()+"__PlusInfo");
# Line 409 | Line 415 | TGraph* thin_line(TGraph *gr) {
415    return thin;
416   }
417  
418 < void make_SMS_exclusion(TH2F *rawlimits,TH2F *xsec,int scantype,std::string& scanx) {
418 > void make_SMS_exclusion(TH2F *rawlimits,TH2F *xsec,int scantype,std::string& scanx, bool isobserved) {
419 >  write_warning(__FUNCTION__,"DEBUGGING THIS FUNCTION"); cout << "Working on : " << rawlimits->GetName() << endl; if(!Contains(rawlimits->GetName(),"map0")) return;
420    TH2F *limits = prep_histo(rawlimits,scantype); // this is to be independent of the style used at creation time
421    //here we get some limits and the cross section; we want to make an exclusion plot!
422    TH2F *rellimits = (TH2F*)limits->Clone("rellimits");
# Line 474 | Line 481 | void make_SMS_exclusion(TH2F *rawlimits,
481  
482   //  fill_with_text(exclline,excllined3,excllinet3,finalcanvas,scantype,scanx);
483    stringstream real;
484 <  real << "Limits/final_exclusion__" << limits->GetName();
484 >  real << "Limits/";
485 >  if(!isobserved) real << "expected/expected_";
486 >  real << "final_exclusion__" << limits->GetName();
487    
488    if(Contains(limits->GetName(),"bestlimits")) {
489      cout << "----------> " << limits->GetName() << endl;
# Line 701 | Line 710 | TH2F* cast_into_shape(TH2F *origin, TH2F
710    return newh;
711   }
712  
713 < void draw_mSUGRA_exclusion(TH2F *ocrosssection, TH2F *oFilterEfficiency, TH2F *oabsXS, TH2F *limitmap, TH2F *expmap, TH2F *expplusmap, TH2F *expminusmap, TH2F *exp2plusmap, TH2F *exp2minusmap) {
713 > void draw_mSUGRA_exclusion(TH2F *ocrosssection, TH2F *oFilterEfficiency, TH2F *oabsXS, TH2F *limitmap, TH2F *expmap, TH2F *expplusmap, TH2F *expminusmap, TH2F *exp2plusmap, TH2F *exp2minusmap, bool isobserved) {
714    TH2F *crosssection = (TH2F*)ocrosssection->Clone("crosssection");
715   //  TH2F *limitmap = (TH2F*)olimitmap->Clone(((string)olimitmap->GetName()+"clone").c_str());
716    TH2F *cleanhisto = (TH2F*)limitmap->Clone("clean");
# Line 792 | Line 801 | void draw_mSUGRA_exclusion(TH2F *ocrosss
801   //  expected->Draw("c");
802   //  observed->Draw("c");
803    stringstream saveas;
804 <  if((int)((string)limitmap->GetName()).find("limitmap")>0) saveas << "Limits/final_exclusion_for_JZB_geq_" << ((string)limitmap->GetName()).substr(((string)limitmap->GetName()).find("limitmap")+8,10);
805 <  else saveas << "Limits/final_exclusion_for_bestlimits";
804 >  if((int)((string)limitmap->GetName()).find("limitmap")>0) {
805 >    saveas << "Limits/";
806 >    if(!isobserved) saveas << "expected/expected_";
807 >    saveas << "final_exclusion_for_JZB_geq_" << ((string)limitmap->GetName()).substr(((string)limitmap->GetName()).find("limitmap")+8,10);
808 >  } else {
809 >    saveas << "Limits/";
810 >    if(!isobserved) saveas << "expected/expected";
811 >    saveas << "final_exclusion_for_bestlimits";
812 >  }
813    CompleteSave(te,saveas.str());
814    delete te;
815    
# Line 839 | Line 855 | void draw_mSUGRA_exclusion(TH2F *ocrosss
855    SugarCoatThis(overview->cd(6),10,noh,observed);
856   //  observed->Draw("c");
857    stringstream saveas2;
858 <  if((int)((string)limitmap->GetName()).find("limitmap")>0) saveas2 << "Limits/exclusion_overview_for_JZB_geq_" << ((string)limitmap->GetName()).substr(((string)limitmap->GetName()).find("limitmap")+8,10);
859 <  else saveas2 << "Limits/exclusion_overview_for_bestlimits";
858 >  if((int)((string)limitmap->GetName()).find("limitmap")>0) {
859 >    saveas2 << "Limits/";
860 >    if(!isobserved) saveas << "expected/expected_";
861 >    saveas2 << "exclusion_overview_for_JZB_geq_" << ((string)limitmap->GetName()).substr(((string)limitmap->GetName()).find("limitmap")+8,10);
862 >  } else {
863 >    saveas2 << "Limits/";
864 >    if(!isobserved) saveas << "expected/expected_";
865 >    saveas2 << "exclusion_overview_for_bestlimits";
866 >  }
867    CompleteSave(overview,saveas2.str());
868    delete overview;
869    delete noh;
# Line 865 | Line 888 | string give_nice_source_label(string nam
888    int mappoint=name.find("map");
889    if(mappoint<0||mappoint>500) return name; // this mean that something weird is happening
890    stringstream nice_label;
891 <  nice_label << "JZB > " << name.substr(mappoint+3,name.size()) << " GeV";
891 >  string identifier=name.substr(mappoint+3,name.size());
892 >  if(identifier!="0") nice_label << "JZB > " << name.substr(mappoint+3,name.size()) << " GeV";
893 >  else nice_label << "JZB shape";
894    return nice_label.str();
895   }
896  
# Line 959 | Line 984 | TH2F *make_best_limits(vector<TH2F*> exp
984    TLegend *sourceleg = new TLegend(0.2,0.5,0.55,0.75);
985    for(int i=0;i<(int)explimits.size();i++) {
986      stringstream legendentry;
987 <    legendentry << i+1 << " = " << give_nice_source_label(explimits[i]->GetName());
987 >    legendentry << give_nice_source_label(explimits[i]->GetName());
988      Int_t currcol=get_exclusion_region_color(i+1,bestlimitsource);
989      explimits[i]->SetFillColor(currcol);
990      explimits[i]->SetLineColor(currcol);
# Line 1037 | Line 1062 | cout << "Size: " << AbsCrossSection.size
1062    }
1063    
1064    if(scantype!=PlottingSetup::mSUGRA) {
1065 <    for(int ilim=0;ilim<(int)obslimits.size();ilim++) make_SMS_exclusion(obslimits[ilim],xsec,scantype,scanx);
1066 <    make_SMS_exclusion(bestlimits,xsec,scantype,scanx);
1065 >    for(int ilim=0;ilim<(int)obslimits.size();ilim++) make_SMS_exclusion(obslimits[ilim],xsec,scantype,scanx,true);
1066 >    for(int ilim=0;ilim<(int)obslimits.size();ilim++) make_SMS_exclusion(explimits[ilim],xsec,scantype,scanx,false);//plotting expected limits
1067 >    make_SMS_exclusion(bestlimits,xsec,scantype,scanx,true);
1068    } else {
1069      for(int ilim=0;ilim<(int)obslimits.size();ilim++) {
1070 <      draw_mSUGRA_exclusion(crosssections[0],FilterEfficiencies[0],AbsCrossSection[0],obslimits[ilim], explimits[ilim], exp1mlimits[ilim], exp1plimits[ilim], exp2mlimits[ilim], exp2plimits[ilim]);
1070 >      draw_mSUGRA_exclusion(crosssections[0],FilterEfficiencies[0],AbsCrossSection[0],obslimits[ilim], explimits[ilim], exp1mlimits[ilim], exp1plimits[ilim], exp2mlimits[ilim], exp2plimits[ilim],true);
1071 >      draw_mSUGRA_exclusion(crosssections[0],FilterEfficiencies[0],AbsCrossSection[0],explimits[ilim], explimits[ilim], exp1mlimits[ilim], exp1plimits[ilim], exp2mlimits[ilim], exp2plimits[ilim],false);
1072      }
1073 <    draw_mSUGRA_exclusion(crosssections[0],FilterEfficiencies[0],AbsCrossSection[0],bestlimits, bestexplimits[0], bestexplimits[1], bestexplimits[2], bestexplimits[3], bestexplimits[4]);
1073 >    draw_mSUGRA_exclusion(crosssections[0],FilterEfficiencies[0],AbsCrossSection[0],bestlimits, bestexplimits[0], bestexplimits[1], bestexplimits[2], bestexplimits[3], bestexplimits[4],true);
1074    }
1075    delete bestlimits;
1076   }
# Line 1214 | Line 1241 | void make_all_syst_plots(vector<TH2F*> a
1241    }
1242   }
1243  
1244 + string IdentifyScan(TString histoname) {
1245 +  cout << "We are dealing with a histo called " << histoname << endl;
1246 +  if (histoname.Contains("T5zzl")) return "0.75";
1247 +  if(histoname.Contains("T5zzh")) return "0.25";
1248 +  if(histoname.Contains("T5zz")) return "0.5";
1249 +  
1250 +  return "IdentifyScanError"+string(histoname.Data());
1251 + }
1252 +
1253   void process_file(TFile* file, float stdmargin) {
1254    standardmargin=stdmargin;
1255    xsecfilename=PlottingSetup::cbafbasedir+"/"+PlottingSetup::SMSReferenceXSFile;
# Line 1224 | Line 1260 | void process_file(TFile* file, float std
1260    
1261    int scantype=PlottingSetup::SMS;
1262    std::string scanx = "0"; // Just for the legend
1227  if (TString(file->GetName()).Contains("T5zzl")) scanx = "0.75";
1228  else  if(TString(file->GetName()).Contains("T5zzh")) scanx = "0.25";
1229  else if(TString(file->GetName()).Contains("T5zz")) scanx = "0.5";
1263    
1264    vector<TH2F*> systematics_histos;
1265    vector<TH2F*> limits_histos;
# Line 1271 | Line 1304 | void process_file(TFile* file, float std
1304        else if(is_systematic) systematics_histos.push_back((TH2F*) obj);
1305        if(name.Contains("mSUGRA")) scantype=PlottingSetup::mSUGRA;
1306        if(name.Contains("GMSB")) scantype=PlottingSetup::GMSB;
1307 +      if(name.Contains("ScanIdentifier")) scanx=IdentifyScan(name);
1308      }
1309 + //  if (TString(file->GetName()).Contains("T5zzl")) scanx = "0.75";
1310 + //  else  if(TString(file->GetName()).Contains("T5zzh")) scanx = "0.25";
1311 + //  else if(TString(file->GetName()).Contains("T5zz")) scanx = "0.5";
1312      write_warning(__FUNCTION__,"Deactivated systematics plots");
1313   //  if(systematics_histos.size()>0) make_all_syst_plots(systematics_histos,scantype,scanx);
1314    if(limits_histos.size()>0) create_exclusion_plots(limits_histos,scantype,scanx);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines