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.8 by buchmann, Wed Apr 25 13:04:27 2012 UTC vs.
Revision 1.9 by buchmann, Mon Apr 30 08:39:44 2012 UTC

# Line 286 | Line 286 | bool fail(double xs, double xsLimit) {re
286  
287   void get_Marias_exclusion_line(TH2F *limit_ref, float pointsX[200], float pointsY[200], int &ixNew, int &counter, int &foundDiag) {
288   // part of Mariarosaria's getRefXsecGraph function
289  double refMult = 3.0;
289    bool enough = false;
290    Int_t  nBinX= limit_ref->GetXaxis()->GetNbins();
291    Int_t  nBinY= limit_ref->GetYaxis()->GetNbins();
# Line 297 | Line 296 | void get_Marias_exclusion_line(TH2F *lim
296        if(limit_ref->GetBinContent(i,j)==0) continue;
297        if( limit_ref->GetBinContent(i,j)>0. && limit_ref->GetBinContent(i,j)<=1.) {
298          double xsLimitAbove = limit_ref->GetBinContent(i, j+1);
300        double xsLimitBelow = limit_ref->GetBinContent(i, j-1);
299  
300          double xsLimit = limit_ref->GetBinContent(i, j);
301          if((fail(1.0,xsLimitAbove)) && (!fail(1.0,xsLimit)) ) {
# Line 472 | Line 470 | void make_SMS_exclusion(TH2F *rawlimits,
470          desertline->Draw("same");
471    }
472  
475  TH2F *emptyh = new TH2F("emptyh","emptyh",1,1,2,1,1,2);
476  
477  
473    exclline->Draw("c");
474  
475   //  fill_with_text(exclline,excllined3,excllinet3,finalcanvas,scantype,scanx);
# Line 510 | Line 505 | TH1* getHisto(char * filename, char* his
505    if(!file0) return hpt_;
506    TDirectory *dir;
507    TH2D * hMuPt;
513  TH1* H;
508  
509    if(dirName == "0") {
510      hMuPt = (TH2D*) file0->Get(histoName);
# Line 643 | Line 637 | TGraph* get_mSUGRA_exclusion_line(TH2F *
637    for(int i=1;i<exclusionhisto->GetNbinsX();i++) {
638      pair<float,float> anything = find_point(exclusionhisto,i);
639      pair<float,float> intthing = find_interpolated_point(exclusionhisto,i);
646    float value=anything.second;
640      if(intthing.second>anything.second) anything.second=intthing.second;
641      if(anything.second>100&&anything.second<1500) points.push_back(anything);
642    }
# Line 661 | Line 654 | TGraph* get_mSUGRA_exclusion_line(TH2F *
654    float lastx2=0;
655    float lasty2=0;
656    
657 <  for(int i=0;i<points.size();i++) {
657 >  for(int i=0;i<(int)points.size();i++) {
658      xpoints[i]=points[i].first;
659      spoints[i]=points[i].second;
660      if(scantype==PlottingSetup::mSUGRA) {
661 <        if(i>1&&i<points.size()-1) spoints[i]=(1.0/3.0)*(points[i-1].second+points[i].second+points[i+1].second);
662 <        if(i>2&&i<points.size()-2) spoints[i]=(1.0/5.0)*(points[i-2].second+points[i-1].second+points[i].second+points[i+1].second+points[i+2].second);
663 <        if(i>3&&i<points.size()-3) spoints[i]=(1.0/7.0)*(points[i-3].second+points[i-2].second+points[i-1].second+points[i].second+points[i+1].second+points[i+2].second+points[i+3].second);
661 >        if(i>1&&i<(int)points.size()-1) spoints[i]=(1.0/3.0)*(points[i-1].second+points[i].second+points[i+1].second);
662 >        if(i>2&&i<(int)points.size()-2) spoints[i]=(1.0/5.0)*(points[i-2].second+points[i-1].second+points[i].second+points[i+1].second+points[i+2].second);
663 >        if(i>3&&i<(int)points.size()-3) spoints[i]=(1.0/7.0)*(points[i-3].second+points[i-2].second+points[i-1].second+points[i].second+points[i+1].second+points[i+2].second+points[i+3].second);
664      }
665  
666      bool usethispoint=true;
# Line 685 | Line 678 | TGraph* get_mSUGRA_exclusion_line(TH2F *
678          pointcounter++;
679      }
680    }
681 <  for(int i=pointcounter;i<=points.size();i++) graph->SetPoint(i,lastx,lasty);
681 >  for(int i=pointcounter;i<=(int)points.size();i++) graph->SetPoint(i,lastx,lasty);
682    if(scantype==PlottingSetup::GMSB||scantype==PlottingSetup::SMS) {
683          //The final point will be a continuation of the last one, towards the diagonal
684          float x,y;
# Line 810 | Line 803 | void draw_mSUGRA_exclusion(TH2F *ocrosss
803    set_range(limits,true,false);
804    set_range(limitmap,true,false);
805    
813  TGraph *emptygraph = new TGraph(0);
814  
806    overview->Divide(3,2);
807    overview->cd(1);
808    overview->cd(1)->SetLogz(1);
# Line 902 | Line 893 | Int_t get_exclusion_region_color(double
893  
894   float findmaxentry(vector<TH2F*> histos, int i, int j) {
895    float max = histos[0]->GetBinContent(i,j);
896 <  for(int k=0;k<histos.size();k++) {
896 >  for(int k=0;k<(int)histos.size();k++) {
897      float entry = histos[k]->GetBinContent(i,j);
898      if(entry>=max) max=entry;
899    }
# Line 918 | Line 909 | TH2F *make_best_limits(vector<TH2F*> exp
909    }
910    if(explimits.size()==0) {
911      write_warning(__FUNCTION__,"There are no expected limits! Will compute best limits based on observed limits! (WATCH OUT THIS IS DISCOURAGED!");
912 <    for(int i=0;i<obslimits.size();i++) explimits.push_back(obslimits[i]);
912 >    for(int i=0;i<(int)obslimits.size();i++) explimits.push_back(obslimits[i]);
913    }
914    TH2F *bestlimit=(TH2F*)obslimits[0]->Clone("bestlimits");
915    TH2F *bestexplimit=(TH2F*)obslimits[0]->Clone("bestexplimits");
# Line 933 | Line 924 | TH2F *make_best_limits(vector<TH2F*> exp
924        float min=findmaxentry(explimits,i,j);
925        float omin=obslimits[0]->GetBinContent(i,j);
926        int source=0;
927 <      for(int k=0;k<explimits.size();k++) {
927 >      for(int k=0;k<(int)explimits.size();k++) {
928          float currlim=explimits[k]->GetBinContent(i,j);
929          if(currlim<=min&&currlim>0) {
930            min=currlim;
# Line 966 | Line 957 | TH2F *make_best_limits(vector<TH2F*> exp
957    bestlimitsource->Draw("COL");
958    gPad->Update();
959    TLegend *sourceleg = new TLegend(0.2,0.5,0.55,0.75);
960 <  for(int i=0;i<explimits.size();i++) {
960 >  for(int i=0;i<(int)explimits.size();i++) {
961      stringstream legendentry;
962      legendentry << i+1 << " = " << give_nice_source_label(explimits[i]->GetName());
963      Int_t currcol=get_exclusion_region_color(i+1,bestlimitsource);
# Line 1004 | Line 995 | void create_exclusion_plots(vector<TH2F*
995      }
996      xsecfile->Close();
997    }
998 <  if(scantype!=PlottingSetup::mSUGRA) for(int i=0;i<limits.size();i++) limits[i]->Scale(1./0.19); // because for T5zz we forced one z to decay leptonically
998 >  if(scantype!=PlottingSetup::mSUGRA) for(int i=0;i<(int)limits.size();i++) limits[i]->Scale(1./0.19); // because for T5zz we forced one z to decay leptonically
999      
1000    vector<TH2F*> explimits;
1001    vector<TH2F*> exp1mlimits;
# Line 1016 | Line 1007 | void create_exclusion_plots(vector<TH2F*
1007    vector<TH2F*> crosssections;
1008    vector<TH2F*> AbsCrossSection;
1009    vector<TH2F*> FilterEfficiencies;
1010 <  for(int ilim=0;ilim<limits.size();ilim++) {
1010 >  for(int ilim=0;ilim<(int)limits.size();ilim++) {
1011      if(TString(limits[ilim]->GetName()).Contains("_explimitmap")) explimits.push_back(limits[ilim]);
1012      if(scantype==PlottingSetup::mSUGRA && TString(limits[ilim]->GetName()).Contains("_exp1plimitmap")) exp1plimits.push_back(limits[ilim]);
1013      if(scantype==PlottingSetup::mSUGRA && TString(limits[ilim]->GetName()).Contains("_exp1mlimitmap")) exp1mlimits.push_back(limits[ilim]);
# Line 1041 | Line 1032 | cout << "Size: " << AbsCrossSection.size
1032    TH2F *bestlimits = make_best_limits(explimits,obslimits,scantype, scanx, exp1mlimits, exp1plimits, exp2mlimits, exp2plimits, bestexplimits);
1033    bestlimits->GetZaxis()->SetRangeUser(limits_lower_bound,limits_upper_bound);
1034  
1035 <  for(int ilim=0;ilim<limits.size();ilim++) {
1035 >  for(int ilim=0;ilim<(int)limits.size();ilim++) {
1036      limits[ilim]->GetZaxis()->SetRangeUser(limits_lower_bound,limits_upper_bound);
1037    }
1038    
1039    if(scantype!=PlottingSetup::mSUGRA) {
1040 <    for(int ilim=0;ilim<obslimits.size();ilim++) make_SMS_exclusion(obslimits[ilim],xsec,scantype,scanx);
1040 >    for(int ilim=0;ilim<(int)obslimits.size();ilim++) make_SMS_exclusion(obslimits[ilim],xsec,scantype,scanx);
1041      make_SMS_exclusion(bestlimits,xsec,scantype,scanx);
1042    } else {
1043 <    for(int ilim=0;ilim<obslimits.size();ilim++) {
1043 >    for(int ilim=0;ilim<(int)obslimits.size();ilim++) {
1044        draw_mSUGRA_exclusion(crosssections[0],FilterEfficiencies[0],AbsCrossSection[0],obslimits[ilim], explimits[ilim], exp1mlimits[ilim], exp1plimits[ilim], exp2mlimits[ilim], exp2plimits[ilim]);
1045      }
1046      draw_mSUGRA_exclusion(crosssections[0],FilterEfficiencies[0],AbsCrossSection[0],bestlimits, bestexplimits[0], bestexplimits[1], bestexplimits[2], bestexplimits[3], bestexplimits[4]);
# Line 1065 | Line 1056 | void smooth_line_once(TGraph *gr) {
1056    int sign=1;
1057    for(int i=0;i<gr->GetN();i++) {
1058      Double_t x,y,x1,y1,x2,y2;
1068    bool turning=false;
1059      gr->GetPoint(i,x,y);
1060      gr->GetPoint(i+1,x1,y1);//need to handle exception here
1061      gr->GetPoint(i-1,x2,y2);//need to handle exception here
# Line 1219 | Line 1209 | void process_syst_plot(TH2F *rhisto,stri
1209  
1210   void make_all_syst_plots(vector<TH2F*> all_histos,int scantype,std::string& scanx) {
1211    string saveto="Systematics/";
1212 <  for(int iplot=0;iplot<all_histos.size();iplot++) {
1212 >  for(int iplot=0;iplot<(int)all_histos.size();iplot++) {
1213        process_syst_plot(all_histos[iplot],saveto,scantype,scanx);
1214    }
1215   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines