ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/Jeng/scripts/pvHistory.C
(Generate patch)

Comparing UserCode/Jeng/scripts/pvHistory.C (file contents):
Revision 1.2 by jengbou, Tue Feb 16 04:50:16 2010 UTC vs.
Revision 1.3 by jengbou, Tue Feb 16 06:27:24 2010 UTC

# Line 1 | Line 1
1 + // [USAGE]
2 + // Modify fillNumbers[] to corresponding runs
3 + // .L pvHistory.C+
4 + // pvHistory("skimmed files",true) ==> the second argument means drawing w.r.t LHC fill number instead of runnumber
5 +
6   #if !defined(__CINT__) && !defined(__MAKECINT__)
7   #include "DataFormats/FWLite/interface/Handle.h"
8   #include "DataFormats/FWLite/interface/Event.h"
# Line 24 | Line 29
29  
30   using namespace std;
31   typedef map<unsigned int, unsigned int> RunNumberMap;
32 + typedef map<RunNumberMap,unsigned int> FillNumberMap;
33  
34 + bool LHCFill;
35   //
36   // iterative fit of +- 2 sigma Gaussian core on a 1d histogram
37   //
# Line 177 | Line 184 | void setRunNumberLabels (TH1* histo, Run
184    }
185   }
186  
187 + void setRunNumberLabels (TH1* histo, FillNumberMap& fillNumbers) {
188 +  char label[32];
189 +  TAxis* axis = histo->GetXaxis();
190 +  for ( FillNumberMap::const_iterator i=fillNumbers.begin();
191 +        i!=fillNumbers.end(); ++i ) {
192 +    RunNumberMap tmp((*i).first);
193 +    if (tmp.begin()->first == 124120 || tmp.begin()->first == 124275)
194 +      sprintf(label,"%d %s",(*i).second," (2.36 TeV)");
195 +    else
196 +      sprintf(label,"%d",(*i).second);
197 +    axis->SetBinLabel((tmp.begin()->second)+1,label);
198 +  }
199 + }
200  
201   //
202   // plot PV distribution for a single run with indication of BS position
# Line 214 | Line 234 | void plotRun (char coord, int run)
234  
235    hpv->Draw("same");
236  
237 <  sprintf(title,"pv%cRun%d.png",coord,run);
237 >  sprintf(title,"pv%cRun%d.eps",coord,run);
238    c->SaveAs(title);
239    delete c;
240   }
# Line 274 | Line 294 | void plotPvVsBs () {
294      l0->AddEntry(bsVsRun,"  Beam Spot","f");
295      l0->Draw();
296  
297 <    c->Print(TString(canvasTitle)+".png");
297 >    c->Print(TString(canvasTitle)+".eps");
298  
299    }
300   }
# Line 282 | Line 302 | void plotPvVsBs () {
302   //
303   // main entry point
304   //
305 < void pvHistory (const vector<string>& fileNames) {
305 > void pvHistory (const vector<string>& fileNames, bool isFill=false) {
306 >  LHCFill = isFill;
307  
308    gROOT->SetStyle("CMS");
309    fwlite::ChainEvent ev(fileNames);
# Line 293 | Line 314 | void pvHistory (const vector<string>& fi
314    // create list of runs with > 100 PVs
315    //
316    RunNumberMap runNumberCounts;
317 +  int fillNumbers [] = {904,907,907,911,911,911,912,912,916,919,923};
318    int lastRun(0);
319    for( ev.toBegin(); !ev.atEnd(); ++ev) {
320      unsigned int run = ev.id().run();
# Line 307 | Line 329 | void pvHistory (const vector<string>& fi
329    // create list of bin indices
330    unsigned int nRun(0);
331    RunNumberMap runNumberIndices;
332 +  FillNumberMap fillNumberIndices;
333 +  int nFill=0;
334    for ( RunNumberMap::iterator i=runNumberCounts.begin();
335 <        i!=runNumberCounts.end(); ++i ) {
336 <    if ( (*i).second>100 )  runNumberIndices[(*i).first] = nRun++;
335 >        i!=runNumberCounts.end(); ++i,nRun++,nFill++ ) {
336 >    if ( (*i).second>100 ) {
337 >      runNumberIndices[(*i).first] = nRun;
338 >      RunNumberMap tmp;
339 >      tmp[(*i).first] = nRun;
340 >      fillNumberIndices[tmp] = fillNumbers[nFill];
341 >    }
342 >  }
343 >  for ( FillNumberMap::iterator i=fillNumberIndices.begin();
344 >        i!=fillNumberIndices.end();++i){
345 >    RunNumberMap tmp((*i).first);
346 >    cout << "Run = " << tmp.begin()->first << "; Fill = " << (*i).second << endl;
347    }
348    cout << "Found " << nRun << " run numbers" << endl;
349    //
# Line 333 | Line 367 | void pvHistory (const vector<string>& fi
367    //
368    lastRun = -1;
369    int idx(-1);
370 <  int nev(0);
370 >  //int nev(0);
371    for( ev.toBegin(); !ev.atEnd(); ++ev) {
372      int run = ev.id().run();
373      //     if ( (++nev)%1000 == 0 )  cout << "processing record " << nev << " ( run "
# Line 400 | Line 434 | void pvHistory (const vector<string>& fi
434    //
435    // set run numbers on x-axis labels
436    //
437 <  setRunNumberLabels(npvVsRun,runNumberIndices);
438 <  setRunNumberLabels(pvxVsRun,runNumberIndices);
439 <  setRunNumberLabels(pvyVsRun,runNumberIndices);
440 <  setRunNumberLabels(pvzVsRun,runNumberIndices);
441 <  setRunNumberLabels(nbsVsRun,runNumberIndices);
442 <  setRunNumberLabels(bsxVsRun,runNumberIndices);
443 <  setRunNumberLabels(bsyVsRun,runNumberIndices);
444 <  setRunNumberLabels(bszVsRun,runNumberIndices);
445 <  setRunNumberLabels(bsxVsRunMean,runNumberIndices);
446 <  setRunNumberLabels(bsyVsRunMean,runNumberIndices);
447 <  setRunNumberLabels(bszVsRunMean,runNumberIndices);
437 >  if (! LHCFill) {
438 >    setRunNumberLabels(npvVsRun,runNumberIndices);
439 >    setRunNumberLabels(pvxVsRun,runNumberIndices);
440 >    setRunNumberLabels(pvyVsRun,runNumberIndices);
441 >    setRunNumberLabels(pvzVsRun,runNumberIndices);
442 >    setRunNumberLabels(nbsVsRun,runNumberIndices);
443 >    setRunNumberLabels(bsxVsRun,runNumberIndices);
444 >    setRunNumberLabels(bsyVsRun,runNumberIndices);
445 >    setRunNumberLabels(bszVsRun,runNumberIndices);
446 >    setRunNumberLabels(bsxVsRunMean,runNumberIndices);
447 >    setRunNumberLabels(bsyVsRunMean,runNumberIndices);
448 >    setRunNumberLabels(bszVsRunMean,runNumberIndices);
449 >  }
450 >  else{
451 >    setRunNumberLabels(npvVsRun,fillNumberIndices);
452 >    setRunNumberLabels(pvxVsRun,fillNumberIndices);
453 >    setRunNumberLabels(pvyVsRun,fillNumberIndices);
454 >    setRunNumberLabels(pvzVsRun,fillNumberIndices);
455 >    setRunNumberLabels(nbsVsRun,fillNumberIndices);
456 >    setRunNumberLabels(bsxVsRun,fillNumberIndices);
457 >    setRunNumberLabels(bsyVsRun,fillNumberIndices);
458 >    setRunNumberLabels(bszVsRun,fillNumberIndices);
459 >    setRunNumberLabels(bsxVsRunMean,fillNumberIndices);
460 >    setRunNumberLabels(bsyVsRunMean,fillNumberIndices);
461 >    setRunNumberLabels(bszVsRunMean,fillNumberIndices);
462 >  }
463    //
464    // fit histograms
465    //
# Line 444 | Line 493 | void pvHistory (const vector<string>& fi
493    //
494    // save histograms
495    //
496 <  TFile* fo = new TFile("../skim_BSC0_AND_40OR41_MinBias_Dec19th_v1.root","recreate");
496 >  TFile* fo = new TFile("./skim_BSC0_AND_40OR41_MinBias_Dec19th_v1_plots.root","recreate");
497    pvxVsRun->Write();
498    pvyVsRun->Write();
499    pvzVsRun->Write();
# Line 474 | Line 523 | void pvHistory (const vector<string>& fi
523   //
524   void pvHistory (const char* fileName) {
525    vector<string> fileNames(1,fileName);
526 <  pvHistory(fileNames);
526 >  pvHistory(fileNames,false);
527 > }
528 >
529 > void pvHistory (const char* fileName,bool isFill) {
530 >  vector<string> fileNames(1,fileName);
531 >  pvHistory(fileNames,isFill);
532   }
533  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines