Skip to content
Snippets Groups Projects
Commit 5d3547ae authored by Ruth Pottgen's avatar Ruth Pottgen
Browse files

Merge branch 'FastCaloSim_PCAEnergyNorm' into '21.0'

Add independent variable to store a normalization energy for TFCSPCAEnergyParametrization

See merge request atlas/athena!28522
parents fe12a14d 5baf7599
No related branches found
No related tags found
No related merge requests found
......@@ -198,7 +198,7 @@
#pragma link C++ class TFCSParametrizationAbsEtaSelectChain+;
#pragma link C++ class TFCSEnergyParametrization+;
#pragma link C++ class TFCSPCAEnergyParametrization+;
#pragma link C++ class TFCSPCAEnergyParametrization-;
#pragma link C++ class TFCSEnergyBinParametrization+;
#pragma link C++ class TFCSLateralShapeParametrization+;
......
......@@ -37,6 +37,9 @@ class TFCSPCAEnergyParametrization:public TFCSEnergyParametrization
void clean();
void Print(Option_t *option = "") const override;
float get_total_energy_normalization() const {return m_total_energy_normalization;};
void set_total_energy_normalization(float norm) {m_total_energy_normalization=norm;};
int do_rescale;
......@@ -53,7 +56,9 @@ class TFCSPCAEnergyParametrization:public TFCSEnergyParametrization
int m_numberpcabins;
ClassDefOverride(TFCSPCAEnergyParametrization,1) //TFCSPCAEnergyParametrization
float m_total_energy_normalization{1};
ClassDefOverride(TFCSPCAEnergyParametrization,2) //TFCSPCAEnergyParametrization
};
......
......@@ -50,7 +50,7 @@ void TFCSPCAEnergyParametrization::Print(Option_t *option) const
TFCSEnergyParametrization::Print(option);
if(longprint) {
ATH_MSG(INFO) << optprint <<" #bins="<<m_numberpcabins<<", layers=";
ATH_MSG(INFO) << optprint <<" #bins="<<m_numberpcabins<<", Enorm="<<m_total_energy_normalization<<", layers=";
for(unsigned int i=0;i<m_RelevantLayers.size();i++) {
if(i>0) msg()<<", ";
msg()<<m_RelevantLayers[i];
......@@ -127,7 +127,7 @@ FCSReturnCode TFCSPCAEnergyParametrization::simulate(TFCSSimulationState& simuls
simdata[l]*=scalefactor;
}
double total_energy=simdata[layerNr.size()]*simulstate.E()/Ekin_nominal();
double total_energy=simdata[layerNr.size()]*simulstate.E()/m_total_energy_normalization;
simulstate.set_E(total_energy);
ATH_MSG_DEBUG("set E to total_energy="<<total_energy);
......@@ -279,3 +279,29 @@ void TFCSPCAEnergyParametrization::clean()
for(unsigned int i=0;i<m_EV.size();i++)
delete m_EV[i];
}
void TFCSPCAEnergyParametrization::Streamer(TBuffer &R__b)
{
// Stream an object of class TFCSPCAEnergyParametrization
if (R__b.IsReading()) {
UInt_t R__s, R__c;
Version_t R__v = R__b.ReadVersion(&R__s, &R__c);
R__b.SetBufferOffset(R__s);
R__b.ReadClassBuffer(TFCSPCAEnergyParametrization::Class(),this);
if(R__v==1) {
set_total_energy_normalization(Ekin_nominal());
//Check if min and max range is a factor 2 within 1 MeV tolerance
//If yes, the nominal to log-avergage
if(TMath::Abs(Ekin_max()-2*Ekin_min())<1) {
set_Ekin_nominal(Ekin_max()/TMath::Sqrt(2));
}
}
} else {
R__b.WriteClassBuffer(TFCSPCAEnergyParametrization::Class(),this);
}
}
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