28 zbeam(
const std::vector<std::pair<int,double> >& refz,
29 const std::vector<std::pair<int,double> >& testz ) {
31 if ( refz.size()!=testz.size() || refz.size()==0 )
return;
33 double min_ = refz.back().first;
34 double max_ = refz[0].first;
36 for (
unsigned i=refz.size() ; i-- ; )
if ( refz[i].first>max_ ) max_ = refz[i].first;
37 for (
unsigned i=0 ; i<refz.size() ; i++ )
if ( refz[i].first<min_ ) min_ = refz[i].first;
39 double minz = refz.back().second;
42 for (
unsigned i=refz.size() ; i-- ; ) {
43 if ( refz[i].second<minz ) minz = refz[i].second;
44 if ( testz[i].second<minz ) minz = testz[i].second;
45 if ( refz[i].second>maxz ) maxz = refz[i].second;
46 if ( testz[i].second>maxz ) maxz = testz[i].second;
49 double dz = maxz-minz;
51 gStyle->SetOptStat(0);
53 TProfile* hr =
new TProfile(
"refz",
";lumi block;z reference [mm]", max_-min_+1, min_-0.5, max_+0.5 );
54 TProfile* ht =
new TProfile(
"testz",
";lumi block;z reference [mm]", max_-min_+1, min_-0.5, max_+0.5 );
56 TH1D*
h =
new TH1D(
"zres",
";#Delta z [mm]", 100, -10, 10 );
58 TH2D* h2 =
new TH2D(
"zcor",
";z ref [mm]; ztest [mm]", 20, minz, maxz, 20, minz, maxz );
60 for (
unsigned i=refz.size() ; i-- ; ) {
61 hr->Fill( refz[i].first, refz[i].second );
62 ht->Fill( testz[i].first, testz[i].second );
64 h->Fill( testz[i].second-refz[i].second );
66 h2->Fill( refz[i].second, testz[i].second );
69 hr->SetMarkerColor(kRed);
70 hr->SetLineColor(kRed);
72 hr->SetMarkerStyle(24);
73 ht->SetMarkerStyle(20);
75 hr->SetMarkerSize(0.5);
76 ht->SetMarkerSize(0.5);
78 hr->SetMaximum( maxz+dz/10 );
79 hr->SetMinimum( minz-dz/10 );
84 gPad->Print(
"zbeam.pdf");
88 gPad->Print(
"zbeam-res.pdf" );
91 h2->DrawCopy(
"colz" );
92 gPad->Print(
"zbeam-cor.pdf" );
94 TFile f(
"zbeam.root",
"recreate" );