29 {
30
31 if ( refz.size()!=testz.size() || refz.size()==0 ) return;
32
33 double min_ = refz.back().first;
34 double max_ = refz[0].first;
35
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;
38
39 double minz = refz.back().second;
40 double maxz = minz;
41
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;
47 }
48
49 double dz = maxz-minz;
50
51 gStyle->SetOptStat(0);
52
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 );
55
56 TH1D*
h =
new TH1D(
"zres",
";#Delta z [mm]", 100, -10, 10 );
57
58 TH2D* h2 = new TH2D( "zcor", ";z ref [mm]; ztest [mm]", 20, minz, maxz, 20, minz, maxz );
59
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 );
63
64 h->Fill( testz[i].second-refz[i].second );
65
66 h2->Fill( refz[i].second, testz[i].second );
67 }
68
69 hr->SetMarkerColor(kRed);
70 hr->SetLineColor(kRed);
71
72 hr->SetMarkerStyle(24);
73 ht->SetMarkerStyle(20);
74
75 hr->SetMarkerSize(0.5);
76 ht->SetMarkerSize(0.5);
77
78 hr->SetMaximum( maxz+dz/10 );
79 hr->SetMinimum( minz-dz/10 );
80
82 ht->DrawCopy("same");
83
84 gPad->Print( "zbeam.pdf");
85
87
88 gPad->Print( "zbeam-res.pdf" );
89
90
91 h2->DrawCopy( "colz" );
92 gPad->Print( "zbeam-cor.pdf" );
93
94 TFile
f(
"zbeam.root",
"recreate" );
97 ht->Write();
98 h2->Write();
100
102 delete ht;
103
105
106 }
TProfile(*args, **kwargs)