Skip to content
Snippets Groups Projects
Commit b98fbcd0 authored by Walter Lampl's avatar Walter Lampl
Browse files

Merge branch 'cherry-pick-c54944e41f-master' into 'master'

Sweeping !16391 from 21.0 to master.
removing obsolete EnergyValidation

See merge request atlas/athena!16544
parents c642294b a17593f5
No related branches found
No related tags found
No related merge requests found
/*
Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
*/
#ifndef EnergyParametrizationValidation_h
#define EnergyParametrizationValidation_h
class EnergyParametrizationValidation
{
public:
EnergyParametrizationValidation() {};
~EnergyParametrizationValidation() {};
static void autozoom(TH1D* h1, double &min, double &max, double &rmin, double &rmax);
static TH1D* refill(TH1D* h_in,double min, double max, double rmin, double rmax);
private:
ClassDef(EnergyParametrizationValidation,1)
};
#endif
/*
Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
*/
#include "TH1D.h"
#include "TFile.h"
#include "TROOT.h"
#include "TSystem.h"
#include "TApplication.h"
#include "TTree.h"
#include "TSystem.h"
#include "TMath.h"
#include "ISF_FastCaloSimParametrization/EnergyParametrizationValidation.h"
#include <iostream>
using namespace std;
void EnergyParametrizationValidation::autozoom(TH1D* h1, double &min, double &max, double &rmin, double &rmax)
{
double min1,min2,max1,max2;
min1=min2=h1->GetXaxis()->GetXmin();
max1=max2=h1->GetXaxis()->GetXmax();
for(int b=1;b<=h1->GetNbinsX();b++)
{
if(h1->GetBinContent(b)>0)
{
min1=h1->GetBinCenter(b);
break;
}
}
for(int b=h1->GetNbinsX();b>=1;b--)
{
if(h1->GetBinContent(b)>0)
{
max1=h1->GetBinCenter(b);
break;
}
}
min=min1;max=max1;
rmin=min-0.5*h1->GetBinWidth(1);
rmax=max+0.5*h1->GetBinWidth(1);
}
TH1D* EnergyParametrizationValidation::refill(TH1D* h_in,double min, double max, double rmin, double rmax)
{
//int debug=0;
int Nbins;
int bins=0;
for(int b=h_in->FindBin(min);b<=h_in->FindBin(max);b++)
bins++;
if(bins<=120)
{
//no rebinning
Nbins=bins;
}
else
{
int tries=0;
int rebin=2;
while(tries<1000)
{
if((10000%rebin)==0)
{
TH1D* h_clone=(TH1D*)h_in->Clone("h_clone");
h_clone->Rebin(rebin);
Nbins=0;
for(int b=h_clone->FindBin(min);b<=h_clone->FindBin(max);b++)
Nbins++;
if(Nbins<120 && Nbins>50)
{
h_in->Rebin(rebin);
cout<<"*decide for rebin="<<rebin<<"*"<<endl;
break;
}
}
rebin++;
tries++;
}
if(tries>=1000)
{
cout<<" ********** GIVE UP ********** "<<endl;
h_in->Rebin((double)bins/100.0);
Nbins=0;
for(int b=h_in->FindBin(min);b<=h_in->FindBin(max);b++)
Nbins++;
}
}
//if(debug) cout<<"---> NBINS "<<Nbins<<endl;
int start=h_in->FindBin(min)-1;
//if(debug) cout<<"AFTER rebin ->underflow "<<h_in->GetBinContent(0)<<" startbin "<<start<<" minimum "<<min<<endl;
TH1D* h_out=new TH1D("h_out","h_out",Nbins,rmin,rmax);
for(int b=1;b<=h_out->GetNbinsX();b++)
{
h_out->SetBinContent(b,h_in->GetBinContent(start+b));
h_out->SetBinError(b,h_in->GetBinError(start+b));
}
//if(debug) cout<<"AFTER refill ->underflow "<<h_out->GetBinContent(0)<<" startbin "<<start<<" minimum "<<min<<endl;
return h_out;
}
......@@ -7,7 +7,6 @@
#pragma link C++ class TFCSSimpleLateralShapeParametrization+;
#pragma link C++ class MeanAndRMS;
#pragma link C++ class TreeReader;
#pragma link C++ class EnergyParametrizationValidation;
#pragma link C++ struct FCS_cell+;
#pragma link C++ struct FCS_hit+;
#pragma link C++ struct FCS_g4hit+;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment