ATLAS Offline Software
Loading...
Searching...
No Matches
RtGraph Class Reference

A class for generating a r-t and t-r graphs by binning the 2D histograms in Calibrator::rtHists in r ot t bins. More...

#include <Calibrator.h>

Collaboration diagram for RtGraph:

Public Member Functions

 RtGraph (TH2F *, int, const char *, bool, TDirectory *)
 the constructor
 ~RtGraph ()
 the destructor
 RtGraph (const RtGraph &other)=delete
 copy constructor
RtGraphoperator= (const RtGraph &other)=delete
 assignment

Public Attributes

std::vector< double > rval
 array of the histograms for all bins
std::vector< double > tval
 the r values
TGraphErrors * trgr
 the t(r) graph
TGraphErrors * rtgr
 the r(t) graph
int npoints
 the number of graph points
float mintime
 the minimum t-value

Private Types

enum  bintype { LOW , GOOD , HIGH , EMPTY }

Private Attributes

std::string m_chname
 the histogram name
std::string m_chtit
 the histogram title
bintypem_btype
float * m_rightsig
float * m_leftsig
float * m_maxval
float * m_leftval
float * m_rightval
float m_mean
float m_mindistance
int * m_maxbin
int m_ipoint
float m_t
float m_d
float m_et
float m_ed
float * m_tv
float * m_dv
float * m_etv
float * m_edv

Detailed Description

A class for generating a r-t and t-r graphs by binning the 2D histograms in Calibrator::rtHists in r ot t bins.

Definition at line 34 of file Calibrator.h.

Member Enumeration Documentation

◆ bintype

enum RtGraph::bintype
private
Enumerator
LOW 
GOOD 
HIGH 
EMPTY 

Definition at line 51 of file Calibrator.h.

Constructor & Destructor Documentation

◆ RtGraph() [1/2]

RtGraph::RtGraph ( TH2F * rtHist,
int binvar,
const char * binlabel,
bool pflag,
TDirectory * dir )

the constructor

Definition at line 118 of file Calibrator.cxx.

118 {
119
120 int fitresult;
121 npoints = binvar==0 ? rtHist->GetNbinsX() : rtHist->GetNbinsY() ;
122
123
124 m_mean = -20.0;
125 m_t = -20.0;
126 m_d = -20.0;
127 m_et = -20.0;
128 m_ed = -20.0;
129 // m_ff = nullptr ;
130
131
132 TH1D** hslizes = new TH1D*[npoints];
133 m_btype = new bintype[npoints];
134 m_tv = new float[npoints];
135 m_dv = new float[npoints];
136 m_etv = new float[npoints];
137 m_edv = new float[npoints];
138 m_rightsig = new float[npoints];
139 m_leftsig = new float[npoints];
140 m_leftval = new float[npoints];
141 m_rightval = new float[npoints];
142 m_maxbin = new int[npoints];
143 m_maxval = new float[npoints];
144
145 m_ipoint=0;
146 mintime=999;
148
149 if (pflag){
150 TDirectory* binhistdir = dir->mkdir("binhist");
151 binhistdir->cd();
152 std::cout << " Calibrator::RtGraph: " << " Directory " << std::string(binhistdir->GetPath()) << " binlabel " << std::string(binlabel) << std::endl;
153 }
154
155 std::cout << " Calibrator::RtGraph: " << " number of points " << npoints << " binvar " << binvar << std::endl;
156 // check and classify the bin-histograms
157 for (int i=0;i<npoints;i++) {
158
159 m_chname = std::string(Form("%s slize_%i",binlabel,i));
160 m_chtit = binvar==0 ? std::string(Form("bin %i : %4.2f < %s < %4.2f [ns]",i,rtHist->GetXaxis()->GetBinLowEdge(i+1),binlabel,rtHist->GetXaxis()->GetBinUpEdge(i+1))) :
161 std::string(Form("bin %i : %4.2f < %s < %4.2f [mm]",i,rtHist->GetYaxis()->GetBinLowEdge(i+1),binlabel,rtHist->GetYaxis()->GetBinUpEdge(i+1))) ;
162 hslizes[i] = binvar==0 ? rtHist->ProjectionY(m_chname.data(),i+1,i+1) :
163 rtHist->ProjectionX(m_chname.data(),i+1,i+1);
164 hslizes[i]->SetTitle(m_chtit.data());
165 if (!pflag){
166 hslizes[i]->SetDirectory(nullptr);
167 }
168
169 m_maxbin[i]=1; m_maxval[i]=0;
170 for (int j=1;j<=hslizes[i]->GetNbinsX();j++) {
171 float val=hslizes[i]->GetBinContent(j);
172 if (val>m_maxval[i]){
173 m_maxval[i]=val;
174 m_maxbin[i]=j;
175 m_leftval[i] = hslizes[i]->GetBinContent(j-1);
176 m_rightval[i] = hslizes[i]->GetBinContent(j+1);
177 }
178 }
179
180 if(m_maxval[i]==0) m_maxval[i]=1.0e-4;
181 m_rightsig[i] = m_rightval[i]==0 ? 100 : std::sqrt(m_maxval[i])/m_maxval[i] + std::sqrt(m_rightval[i])/m_rightval[i];
182 m_leftsig[i] = m_leftval[i]==0 ? 100 : std::sqrt(m_maxval[i])/m_maxval[i] + std::sqrt(m_leftval[i])/m_leftval[i];
183
184 m_btype[i]=EMPTY;
185 if(true){
186 m_btype[i]=GOOD;
187 m_btype[i-1]=GOOD;
188 }
189 else{
190 if (hslizes[i]->GetEntries()>0){
191 if (i<(float)hslizes[i]->GetNbinsX()/2) m_btype[i]=LOW;
192 else m_btype[i]=HIGH;
193 }
194 }
195 int rtEntries = rtHist->GetEntries();
196 if(rtEntries==0) rtEntries=1;
197 printf("%s ... %8f %8i %4i %8f %8f %4i\n", m_chtit.data(), (float)hslizes[i]->GetEntries()/(float)rtEntries, (int)hslizes[i]->GetEntries(), m_maxbin[i], m_leftsig[i], m_rightsig[i], m_btype[i]);
198 }
199
200 float frmin=0,frmax=0;
201 for (int i=0;i<npoints;i++) {
202
203 // prepare initial fit parameters
204 m_mean=hslizes[i]->GetBinCenter(m_maxbin[i]);
205 if (m_btype[i]==LOW) {frmin = hslizes[i]->GetBinCenter(1); frmax = hslizes[i]->GetBinCenter(m_maxbin[i]+4);}
206 if (m_btype[i]==GOOD) {frmin = hslizes[i]->GetBinCenter(m_maxbin[i]-3); frmax = hslizes[i]->GetBinCenter(m_maxbin[i]+3);}
207 if (m_btype[i]==HIGH) {frmin = hslizes[i]->GetBinCenter(m_maxbin[i]-3); frmax = hslizes[i]->GetBinCenter(m_maxbin[i]+4);}
208
209 std::unique_ptr<TF1> ff(new TF1("dtfitfunc","gaus"));
210
211 ff->SetRange(frmin,frmax);
212
213 m_t = binvar==0 ? rtHist->GetXaxis()->GetBinCenter(i+1) : rtHist->GetYaxis()->GetBinCenter(i+1);
214 m_et = binvar==0 ? rtHist->GetXaxis()->GetBinWidth(1)/std::sqrt(12.0) : rtHist->GetYaxis()->GetBinWidth(1)/std::sqrt(12.0);
215 m_d = 0;
216 m_ed = 0;
217
218 if (m_btype[i]==LOW){
219 m_d = 0;
220 m_ed = 0;
221 }
222 if (m_btype[i]==HIGH){
223 m_d = 2;
224 m_ed = 0;
225 }
226 if (m_btype[i]==EMPTY){
227 m_d = 0;
228 m_ed = 0;
229 }
230 if (m_btype[i]==GOOD && hslizes[i]->GetEntries()>3){
231 if (m_btype[i-1]==GOOD){
232 fitresult=hslizes[i]->Fit("dtfitfunc","QR");
233 ff->SetRange(m_mean-1.0*ff->GetParameter(2), m_mean+1.0*ff->GetParameter(2));
234 fitresult=hslizes[i]->Fit("dtfitfunc","QR");
235 m_d = ff->GetParameter(1);
236 m_ed = ff->GetParError(1);
237 std::cout << fitresult << " " << m_ed << std::endl;
238 }
239 else{
240 m_d = 0;
241 m_ed = 0;
242 }
243 }
244
245
246 if (m_btype[i]==GOOD && m_ed!=0){
251 m_ipoint++;
252 if (binvar==0) {
253 rval.push_back(m_d);
254 tval.push_back(m_t);
255 }
256 else {
257 rval.push_back(m_t);
258 tval.push_back(m_d);
259 }
260 }
261
262
264
265 }
266
267 rtgr = binvar==0 ? new TGraphErrors(m_ipoint,m_tv,m_dv,m_etv,m_edv) : new TGraphErrors(m_ipoint,m_dv,m_tv,m_edv,m_etv);
268 rtgr->SetTitle((std::string("binning in ") + binlabel).data());
269 trgr = binvar==0 ? new TGraphErrors(m_ipoint,m_dv,m_tv,m_edv,m_etv) : new TGraphErrors(m_ipoint,m_tv,m_dv,m_etv,m_edv);
270 trgr->SetTitle((std::string("binning in ") + binlabel).data());
271
272 rtgr->SetMarkerStyle(1) ;
273 rtgr->SetMarkerColor(2) ;
274 rtgr->SetLineColor(2) ;
275 rtgr->SetName("rtgraph") ;
276 trgr->SetMarkerStyle(1) ;
277 trgr->SetMarkerColor(2) ;
278 trgr->SetLineColor(2) ;
279 trgr->SetName("trgraph") ;
280
281 dir->cd();
282 delete [] hslizes;
283}
char data[hepevt_bytes_allocation_ATLAS]
Definition HepEvt.cxx:11
if(febId1==febId2)
TGraphErrors * GetEntries(TH2F *histo)
float * m_rightsig
Definition Calibrator.h:53
TGraphErrors * trgr
the t(r) graph
Definition Calibrator.h:44
bintype * m_btype
Definition Calibrator.h:52
float m_mindistance
Definition Calibrator.h:59
float * m_edv
Definition Calibrator.h:69
float * m_tv
Definition Calibrator.h:66
float * m_leftsig
Definition Calibrator.h:54
float m_et
Definition Calibrator.h:64
std::string m_chname
the histogram name
Definition Calibrator.h:49
float * m_etv
Definition Calibrator.h:68
float * m_rightval
Definition Calibrator.h:57
TGraphErrors * rtgr
the r(t) graph
Definition Calibrator.h:45
float m_d
Definition Calibrator.h:63
int m_ipoint
Definition Calibrator.h:61
std::string m_chtit
the histogram title
Definition Calibrator.h:50
float * m_leftval
Definition Calibrator.h:56
float m_t
Definition Calibrator.h:62
std::vector< double > rval
array of the histograms for all bins
Definition Calibrator.h:42
float m_mean
Definition Calibrator.h:58
float m_ed
Definition Calibrator.h:65
int npoints
the number of graph points
Definition Calibrator.h:46
float * m_dv
Definition Calibrator.h:67
std::vector< double > tval
the r values
Definition Calibrator.h:43
float * m_maxval
Definition Calibrator.h:55
float mintime
the minimum t-value
Definition Calibrator.h:47
int * m_maxbin
Definition Calibrator.h:60
fitresult
Definition fitman.py:590

◆ ~RtGraph()

RtGraph::~RtGraph ( )

the destructor

Definition at line 287 of file Calibrator.cxx.

287 {
288
289 delete [] m_btype ;
290 delete [] m_tv ;
291 delete [] m_dv ;
292 delete [] m_etv ;
293 delete [] m_edv ;
294 delete [] m_rightsig ;
295 delete [] m_leftsig ;
296 delete [] m_leftval ;
297 delete [] m_rightval ;
298 delete [] m_maxbin ;
299 delete [] m_maxval ;
300}

◆ RtGraph() [2/2]

RtGraph::RtGraph ( const RtGraph & other)
delete

copy constructor

Member Function Documentation

◆ operator=()

RtGraph & RtGraph::operator= ( const RtGraph & other)
delete

assignment

Member Data Documentation

◆ m_btype

bintype* RtGraph::m_btype
private

Definition at line 52 of file Calibrator.h.

◆ m_chname

std::string RtGraph::m_chname
private

the histogram name

Definition at line 49 of file Calibrator.h.

◆ m_chtit

std::string RtGraph::m_chtit
private

the histogram title

Definition at line 50 of file Calibrator.h.

◆ m_d

float RtGraph::m_d
private

Definition at line 63 of file Calibrator.h.

◆ m_dv

float* RtGraph::m_dv
private

Definition at line 67 of file Calibrator.h.

◆ m_ed

float RtGraph::m_ed
private

Definition at line 65 of file Calibrator.h.

◆ m_edv

float* RtGraph::m_edv
private

Definition at line 69 of file Calibrator.h.

◆ m_et

float RtGraph::m_et
private

Definition at line 64 of file Calibrator.h.

◆ m_etv

float* RtGraph::m_etv
private

Definition at line 68 of file Calibrator.h.

◆ m_ipoint

int RtGraph::m_ipoint
private

Definition at line 61 of file Calibrator.h.

◆ m_leftsig

float* RtGraph::m_leftsig
private

Definition at line 54 of file Calibrator.h.

◆ m_leftval

float* RtGraph::m_leftval
private

Definition at line 56 of file Calibrator.h.

◆ m_maxbin

int* RtGraph::m_maxbin
private

Definition at line 60 of file Calibrator.h.

◆ m_maxval

float* RtGraph::m_maxval
private

Definition at line 55 of file Calibrator.h.

◆ m_mean

float RtGraph::m_mean
private

Definition at line 58 of file Calibrator.h.

◆ m_mindistance

float RtGraph::m_mindistance
private

Definition at line 59 of file Calibrator.h.

◆ m_rightsig

float* RtGraph::m_rightsig
private

Definition at line 53 of file Calibrator.h.

◆ m_rightval

float* RtGraph::m_rightval
private

Definition at line 57 of file Calibrator.h.

◆ m_t

float RtGraph::m_t
private

Definition at line 62 of file Calibrator.h.

◆ m_tv

float* RtGraph::m_tv
private

Definition at line 66 of file Calibrator.h.

◆ mintime

float RtGraph::mintime

the minimum t-value

Definition at line 47 of file Calibrator.h.

◆ npoints

int RtGraph::npoints

the number of graph points

Definition at line 46 of file Calibrator.h.

◆ rtgr

TGraphErrors* RtGraph::rtgr

the r(t) graph

Definition at line 45 of file Calibrator.h.

◆ rval

std::vector<double> RtGraph::rval

array of the histograms for all bins

the r values

Definition at line 42 of file Calibrator.h.

◆ trgr

TGraphErrors* RtGraph::trgr

the t(r) graph

Definition at line 44 of file Calibrator.h.

◆ tval

std::vector<double> RtGraph::tval

the r values

Definition at line 43 of file Calibrator.h.


The documentation for this class was generated from the following files: