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

Comparing UserCode/cbrown/Development/Plotting/Modules/ShapeLimit.C (file contents):
Revision 1.9 by buchmann, Fri May 4 11:47:57 2012 UTC vs.
Revision 1.10 by buchmann, Mon May 7 16:44:27 2012 UTC

# Line 292 | Line 292 | void generate_shapes_for_systematic(bool
292    if(signalonly) {
293      dout << "Processing a signal with mcjzb: " << mcjzb << " (identifier: '" << identifier << "')" << endl;
294      TH1F *ZOSSFP = QuickDraw(signalevents,"ZOSSFP",mcjzb,binning,     "JZB", "events",cutmass&&cutOSSF&&limitnJetcut&&basiccut,addcut,mc,luminosity,xsec);
295    TH1F *ZOSOFP = QuickDraw(signalevents,"ZOSOFP",mcjzb,binning,     "JZB", "events",cutmass&&cutOSOF&&limitnJetcut&&basiccut,addcut,mc,luminosity,xsec);
295      TH1F *ZOSSFN = QuickDraw(signalevents,"ZOSSFN","-"+mcjzb,binning, "JZB", "events",cutmass&&cutOSSF&&limitnJetcut&&basiccut,addcut,mc,luminosity,xsec);
296 <    TH1F *ZOSOFN = QuickDraw(signalevents,"ZOSOFN","-"+mcjzb,binning, "JZB", "events",cutmass&&cutOSOF&&limitnJetcut&&basiccut,addcut,mc,luminosity,xsec);
296 >    TH1F *ZOSOFP;
297 >    TH1F *ZOSOFN;
298 >
299 >    if(!PlottingSetup::FullMCAnalysis) {
300 >      ZOSOFP = QuickDraw(signalevents,"ZOSOFP",mcjzb,binning,     "JZB", "events",cutmass&&cutOSOF&&limitnJetcut&&basiccut,addcut,mc,luminosity,xsec);
301 >      ZOSOFN = QuickDraw(signalevents,"ZOSOFN","-"+mcjzb,binning, "JZB", "events",cutmass&&cutOSOF&&limitnJetcut&&basiccut,addcut,mc,luminosity,xsec);
302 >    }
303      
304      TH1F *SBOSSFP;
305      TH1F *SBOSOFP;
306      TH1F *SBOSSFN;
307      TH1F *SBOSOFN;
308      
309 <    if(PlottingSetup::RestrictToMassPeak) {
309 >    if(PlottingSetup::RestrictToMassPeak&&!PlottingSetup::FullMCAnalysis) {
310        SBOSSFP = QuickDraw(signalevents,"SBOSSFP",mcjzb,binning, "JZB", "events",cutOSSF&&limitnJetcut&&basiccut&&sidebandcut,addcut,mc,luminosity,xsec);
311        SBOSOFP = QuickDraw(signalevents,"SBOSOFP",mcjzb,binning, "JZB", "events",cutOSOF&&limitnJetcut&&basiccut&&sidebandcut,addcut,mc,luminosity,xsec);
312        SBOSSFN = QuickDraw(signalevents,"SBOSSFN","-"+mcjzb,binning, "JZB", "events",cutOSSF&&limitnJetcut&&basiccut&&sidebandcut,addcut,mc,luminosity,xsec);
# Line 320 | Line 325 | void generate_shapes_for_systematic(bool
325      TH1F *flippedLpred = new TH1F("flippedLpred","flippedLpred",binning.size()-1,&binning[0]);
326      
327      Lobs->Add(ZOSSFP);
328 <    Lpred->Add(ZOSSFN);
328 >    if(!PlottingSetup::FullMCAnalysis) Lpred->Add(ZOSSFN);
329      
330      dout << "SITUATION FOR SIGNAL: " << endl;
331 <    dout << " OSSF     JZB> 0 : " << ZOSSFP->Integral() << "     JZB < 0 :" << ZOSSFN->Integral() << endl;
332 <    dout << " OSOF     JZB> 0 : " << ZOSOFP->Integral() << "     JZB < 0 :" << ZOSOFN->Integral() << endl;
333 <    if(PlottingSetup::RestrictToMassPeak) {
334 <      dout << " OSSF SB  JZB> 0 : " << SBOSSFP->Integral() << "     JZB < 0 :" << SBOSSFN->Integral() << endl;
335 <      dout << " OSOF SB  JZB> 0 : " << SBOSOFP->Integral() << "     JZB < 0 :" << SBOSOFN->Integral() << endl;
331 >    
332 >    
333 >    if(PlottingSetup::FullMCAnalysis) {
334 >      dout << " OSSF     JZB> 0 : " << ZOSSFP->Integral() << endl;
335 >    } else {
336 >      dout << " OSSF     JZB> 0 : " << ZOSSFP->Integral() << "     JZB < 0 :" << ZOSSFN->Integral() << endl;
337 >      dout << " OSOF     JZB> 0 : " << ZOSOFP->Integral() << "     JZB < 0 :" << ZOSOFN->Integral() << endl;
338 >      if(PlottingSetup::RestrictToMassPeak&&!PlottingSetup::FullMCAnalysis) {
339 >        dout << " OSSF SB  JZB> 0 : " << SBOSSFP->Integral() << "     JZB < 0 :" << SBOSSFN->Integral() << endl;
340 >        dout << " OSOF SB  JZB> 0 : " << SBOSOFP->Integral() << "     JZB < 0 :" << SBOSOFN->Integral() << endl;
341 >      }
342      }
343  
344      
345      flippedLobs->Add(ZOSSFN);
346 <    flippedLpred->Add(ZOSSFP);
346 >    if(!PlottingSetup::FullMCAnalysis) flippedLpred->Add(ZOSSFP);
347      
348 <    if(PlottingSetup::RestrictToMassPeak) {
349 <      Lpred->Add(ZOSOFP,1.0/3);
350 <      Lpred->Add(ZOSOFN,-1.0/3);
351 <      Lpred->Add(SBOSSFP,1.0/3);
352 <      Lpred->Add(SBOSSFN,-1.0/3);
353 <      Lpred->Add(SBOSOFP,1.0/3);
354 <      Lpred->Add(SBOSOFN,-1.0/3);
355 <      
356 <      //flipped prediction
357 <      flippedLpred->Add(ZOSOFP,-1.0/3);
358 <      flippedLpred->Add(ZOSOFN,1.0/3);
359 <      flippedLpred->Add(SBOSSFP,-1.0/3);
360 <      flippedLpred->Add(SBOSSFN,1.0/3);
361 <      flippedLpred->Add(SBOSOFP,-1.0/3);
362 <      flippedLpred->Add(SBOSOFN,1.0/3);
363 <      
364 <    } else {
365 <      Lpred->Add(ZOSOFP,1.0);
366 <      Lpred->Add(ZOSOFN,-1.0);
367 <      
368 <      //flipped prediction
369 <      flippedLpred->Add(ZOSOFP,-1.0);
370 <      flippedLpred->Add(ZOSOFN,1.0);
348 >    if(!PlottingSetup::FullMCAnalysis) {
349 >      if(PlottingSetup::RestrictToMassPeak) {
350 >        Lpred->Add(ZOSOFP,1.0/3);
351 >        Lpred->Add(ZOSOFN,-1.0/3);
352 >        Lpred->Add(SBOSSFP,1.0/3);
353 >        Lpred->Add(SBOSSFN,-1.0/3);
354 >        Lpred->Add(SBOSOFP,1.0/3);
355 >        Lpred->Add(SBOSOFN,-1.0/3);
356 >        
357 >        //flipped prediction
358 >        flippedLpred->Add(ZOSOFP,-1.0/3);
359 >        flippedLpred->Add(ZOSOFN,1.0/3);
360 >        flippedLpred->Add(SBOSSFP,-1.0/3);
361 >        flippedLpred->Add(SBOSSFN,1.0/3);
362 >        flippedLpred->Add(SBOSOFP,-1.0/3);
363 >        flippedLpred->Add(SBOSOFN,1.0/3);
364 >      } else {
365 >        Lpred->Add(ZOSOFP,1.0);
366 >        Lpred->Add(ZOSOFN,-1.0);
367 >        
368 >        //flipped prediction
369 >        flippedLpred->Add(ZOSOFP,-1.0);
370 >        flippedLpred->Add(ZOSOFN,1.0);
371 >      }
372      }
373      
374      TH1F *signal = (TH1F*)Lobs->Clone("signal");
375 <    signal->Add(Lpred,-1);
375 >    if(!PlottingSetup::FullMCAnalysis) signal->Add(Lpred,-1);
376      signal->SetName(signalname.c_str());
377      signal->SetTitle(signalname.c_str());
378      signal->Write();
379      
380      TH1F *flippedsignal = (TH1F*)flippedLobs->Clone();
381 <    flippedsignal->Add(flippedLpred,-1);
381 >    if(!PlottingSetup::FullMCAnalysis) flippedsignal->Add(flippedLpred,-1);
382      flippedsignal->SetName(("flipped_"+signalname).c_str());
383      flippedsignal->Write();
384      
# Line 380 | Line 392 | void generate_shapes_for_systematic(bool
392        signalStatDn->SetTitle(((string)signal->GetTitle()+"_StatDown").c_str());
393        
394        for(int i=1;i<=signalStatDn->GetNbinsX();i++) {
395 <        float staterr = TMath::Sqrt(Lpred->GetBinContent(i) + Lobs->GetBinContent(i));
396 <        dout << "Stat err in bin " << i << " : " << staterr << endl;
397 <        dout << "    prediction: " << Lpred->GetBinContent(i) << " , observation: " << Lobs->GetBinContent(i) << " --> signal: " << signal->GetBinContent(i) << endl;
398 <        dout << "    we obtain : " << signal->GetBinContent(i)-staterr << " , " << signal->GetBinContent(i)+staterr << endl;
395 >        float staterr;
396 >        if(!PlottingSetup::FullMCAnalysis) staterr = TMath::Sqrt(Lpred->GetBinContent(i) + Lobs->GetBinContent(i));
397 >        else staterr = TMath::Sqrt(Lobs->GetBinContent(i));
398 >        
399 >        if(!PlottingSetup::FullMCAnalysis) {
400 >          dout << "Stat err in bin " << i << " : " << staterr << endl;
401 >          dout << "    prediction: " << Lpred->GetBinContent(i) << " , observation: " << Lobs->GetBinContent(i) << " --> signal: " << signal->GetBinContent(i) << endl;
402 >          dout << "    we obtain : " << signal->GetBinContent(i)-staterr << " , " << signal->GetBinContent(i)+staterr << endl;
403 >        }
404          if(signal->GetBinContent(i)-staterr>0) signalStatDn->SetBinContent(i,signal->GetBinContent(i)-staterr);
405          else signalStatDn->SetBinContent(i,0);
406          signalStatUp->SetBinContent(i,signal->GetBinContent(i)+staterr);
# Line 405 | Line 422 | void generate_shapes_for_systematic(bool
422        flippedsignalStatDn->SetTitle(((string)flippedsignal->GetTitle()+"_StatDown").c_str());
423        
424        for(int i=1;i<=flippedsignalStatDn->GetNbinsX();i++) {
425 <        float staterr = TMath::Sqrt(flippedLpred->GetBinContent(i) + flippedLobs->GetBinContent(i));
425 >        float staterr;
426 >        if(!PlottingSetup::FullMCAnalysis) staterr = TMath::Sqrt(flippedLpred->GetBinContent(i) + flippedLobs->GetBinContent(i));
427 >        else staterr = TMath::Sqrt(flippedLobs->GetBinContent(i));
428          if(flippedsignal->GetBinContent(i)-staterr>0) flippedsignalStatDn->SetBinContent(i,flippedsignal->GetBinContent(i)-staterr);
429          else flippedsignalStatDn->SetBinContent(i,0);
430          flippedsignalStatUp->SetBinContent(i,flippedsignal->GetBinContent(i)+staterr);
# Line 842 | Line 861 | ShapeDroplet LimitsFromShapes(bool asymp
861    bool dataonly=false;
862    
863    generate_shapes_for_systematic(signalonly,dataonly,limfile,events,"",mcjzb,datajzb,noJES,jzbbins,limcan,addcut,xsec);
845 //  generate_shapes_for_systematic(signalonly,dataonly,limfile,events,"peakUp",newjzbexpression(mcjzb,jzbpeakerrormc),newjzbexpression(datajzb,jzbpeakerrordata),noJES,jzbbins,limcan,addcut,xsec);
846 //  generate_shapes_for_systematic(signalonly,dataonly,limfile,events,"peakDown",newjzbexpression(mcjzb,-jzbpeakerrormc),newjzbexpression(datajzb,-jzbpeakerrordata),noJES,jzbbins,limcan,addcut,xsec);
864    generate_shapes_for_systematic(signalonly,dataonly,limfile,events,"JESUp",mcjzb,datajzb,JESup,jzbbins,limcan,addcut,xsec);
865    generate_shapes_for_systematic(signalonly,dataonly,limfile,events,"JESDown",mcjzb,datajzb,JESdown,jzbbins,limcan,addcut,xsec);
866    
# Line 913 | Line 930 | ShapeDroplet LimitsFromShapes(bool asymp
930    dout << "Info: Shape root file and datacard have been generated in " << RunDirectory << endl;
931    stringstream command;
932    if(asymptotic) {
933 <    if(firstGuess>0) command << "bash CreateModel.sh " << RunDirectory << " susydatacard.txt" << " 1 0 0 " << firstGuess; // ASYMPTOTIC LIMITS WITH FIRST GUESS
934 <    else command << "bash CreateModel.sh " << RunDirectory << " susydatacard.txt" << " 0 0 0 0"; // ASYMPTOTIC LIMITS
933 >    if(firstGuess>0) command << "bash " << PlottingSetup::cbafbasedir<< "/DistributedModelCalculations/ShapeLimits/CreateModel.sh " << RunDirectory << " susydatacard.txt" << " 1 0 0 " << firstGuess; // ASYMPTOTIC LIMITS WITH FIRST GUESS
934 >    else command << "bash " << PlottingSetup::cbafbasedir<< "/DistributedModelCalculations/ShapeLimits/CreateModel.sh " << RunDirectory << " susydatacard.txt" << " 0 0 0 0"; // ASYMPTOTIC LIMITS
935    }
936 <  else command << "bash CreateModel.sh " << RunDirectory << " susydatacard.txt" << " 2 0 " << int(0.333 * firstGuess) << " " << int(firstGuess); // ASYMPTOTIC LIMITS
936 >  else command << "bash " << PlottingSetup::cbafbasedir<< "/DistributedModelCalculations/ShapeLimits/CreateModel.sh " << RunDirectory << " susydatacard.txt" << " 2 0 " << int(0.333 * firstGuess) << " " << int(firstGuess); // ASYMPTOTIC LIMITS
937    dout <<"Going to run : " << command.str() << endl;
938    int CreatedModelFileExitCode = gSystem->Exec(command.str().c_str());
939    dout << "exit code of limit algorithm (CreateModel.sh) : " << CreatedModelFileExitCode << endl;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines