Skip to content
Snippets Groups Projects
Commit 043b67a1 authored by John Derek Chapman's avatar John Derek Chapman
Browse files

Merge branch 'tlari-proof-trtdigi5' into '21.3'

Retuning of resolution, efficiencies, and high threshold probability parameterization

See merge request !31373
parents 46e744da 3b477d03
No related branches found
No related tags found
16 merge requests!46457Draft: Adding the tools to run over data,!46454Draft: Adding the tools to be able to run over data,!44869Draft: Update to candidate store,!4217921.9-first_steps-InDetTrackingGeometryXML,!39162Draft: Insert BCM' support,!38765Bis78 cabling,!36893Fix size of RPC active region in BIS78 and strip material,!3645821.9: Improving material map description (ATLITKSW-127),!36293WIP pixel updates,!34993KF-input adding jXERHO to the AOD outputs,!34864LH rings in front ot HR rigs,!34763Fix L1_4jJ15.0ETA25 item definition (ATR-21261),!33996WIP: Correct MM zpositions,!3291021.3 salva s0,!31887Merge 21.3.19 into 21.9,!31373Retuning of resolution, efficiencies, and high threshold probability parameterization
......@@ -153,6 +153,8 @@ private:
// numerical constants. Might wish to move these to a DB in the future
double m_trtTailFraction; // fraction in tails
double m_trtSigmaDriftRadiusTail; // sigma of one TRT straw in R
double m_trtHighProbabilityBoostBkg;
double m_trtHighProbabilityBoostEle;
double m_cFit[ 8 ][ 5 ]; // efficiency and resolution
};
......
......@@ -193,6 +193,8 @@ StatusCode TRTFastDigitizationTool::initializeNumericalConstants() {
m_trtTailFraction = 4.7e-4; // part of the fraction in Tails
m_trtSigmaDriftRadiusTail = 4./sqrt(12.); // sigma of one TRT straw in R (Tail) [mm]
m_trtHighProbabilityBoostBkg = 1.3; // for all particles but electrons
m_trtHighProbabilityBoostEle = 1.; // for electrons
return StatusCode::SUCCESS;
......@@ -204,18 +206,22 @@ StatusCode TRTFastDigitizationTool::setNumericalConstants() {
// Efficiency and resolution dependence on pileup
// Resolution is parametrized with a double gaussian so there are two parameters (res1 = core, res2= tail)
static const float eff_corr_pileup_dependence = -0.001; // variation of efficiency with the number of Xing
static const float res1_corr_pileup_dependence = 0.01; // variation of core resolution (fractional) with the number of Xing
static const float eff_corr_pileup_dependence = -0.0005; // variation of efficiency with the number of Xing
static const float res1_corr_pileup_dependence = 0.005; // variation of core resolution (fractional) with the number of Xing
static const float res2_corr_pileup_dependence = 0.015; // variation of tail resolution (fractional) with the number of Xing
// scale factors relative to the value for mu=20
float effcorr = 1-eff_corr_pileup_dependence*(m_NCollPerEvent-20);
float effcorr = 1+eff_corr_pileup_dependence*(m_NCollPerEvent-20);
float res1corr = 1+res1_corr_pileup_dependence*(m_NCollPerEvent-20);
float res2corr = 1+res2_corr_pileup_dependence*(m_NCollPerEvent-20);
// Now the numerical parameters for efficiency and resolution
static const float tailRes = 3.600; // scale factor for tail resolution
static const float coreFrac_Xe = 0.900; // fraction of events in resolution core (Xe)
static const float coreFrac_Ar = 0.800; // fraction of events in resolution core (Ar)
//static const float coreFrac_Xe = 0.900; // fraction of events in resolution core (Xe)
//static const float coreFrac_Ar = 0.800; // fraction of events in resolution core (Ar)
static const float coreFracEndcap_Xe = 0.40; // fraction of events in resolution core (Xe)
static const float coreFracEndcap_Ar = 0.40; // fraction of events in resolution core (Ar)
static const float coreFracBarrel_Xe = 0.250; // fraction of events in resolution core (Xe)
static const float coreFracBarrel_Ar = 0.250; // fraction of events in resolution core (Ar)
static const float eff_BarrelA_Xe = 0.840; // efficiency scale factor
static const float eff_EndcapA_Xe = 0.875;
......@@ -231,49 +237,49 @@ StatusCode TRTFastDigitizationTool::setNumericalConstants() {
static const float err_Barrel_Ar = 1.020;
static const float err_Endcap_Ar = 1.040;
static const float coreRes_Barrel_Xe = 1.545; // scale factor for core resolution
static const float coreRes_Endcap_Xe = 1.455;
static const float coreRes_Barrel_Ar = 1.495;
static const float coreRes_Endcap_Ar = 1.405;
static const float coreRes_Barrel_Xe = 0.4; // 1.545; // scale factor for core resolution
static const float coreRes_Endcap_Xe = 0.5; // 1.455;
static const float coreRes_Barrel_Ar = 0.4; // 1.495;
static const float coreRes_Endcap_Ar = 0.5; // 1.405;
m_cFit[ 0 ][ 0 ] = effcorr*eff_BarrelA_Xe; // Barrel A-side Xenon
m_cFit[ 0 ][ 1 ] = err_Barrel_Xe;
m_cFit[ 0 ][ 2 ] = coreFrac_Xe;
m_cFit[ 0 ][ 2 ] = coreFracBarrel_Xe;
m_cFit[ 0 ][ 3 ] = res1corr*coreRes_Barrel_Xe;
m_cFit[ 0 ][ 4 ] = res2corr*tailRes;
m_cFit[ 1 ][ 0 ] = effcorr*eff_EndcapA_Xe; // Endcap A-side Xenon
m_cFit[ 1 ][ 1 ] = err_Endcap_Xe;
m_cFit[ 1 ][ 2 ] = coreFrac_Xe;
m_cFit[ 1 ][ 2 ] = coreFracEndcap_Xe;
m_cFit[ 1 ][ 3 ] = res1corr*coreRes_Endcap_Xe;
m_cFit[ 1 ][ 4 ] = res2corr*tailRes;
m_cFit[ 2 ][ 0 ] = effcorr*eff_BarrelC_Xe; // Barrel C-side Xenon
m_cFit[ 2 ][ 1 ] = err_Barrel_Xe;
m_cFit[ 2 ][ 2 ] = coreFrac_Xe;
m_cFit[ 2 ][ 2 ] = coreFracBarrel_Xe;
m_cFit[ 2 ][ 3 ] = res1corr*coreRes_Barrel_Xe;
m_cFit[ 2 ][ 4 ] = res2corr*tailRes;
m_cFit[ 3 ][ 0 ] = effcorr*eff_EndcapC_Xe; // Endcap C-side Xenon
m_cFit[ 3 ][ 1 ] = err_Endcap_Xe;
m_cFit[ 3 ][ 2 ] = coreFrac_Xe;
m_cFit[ 3 ][ 2 ] = coreFracEndcap_Xe;
m_cFit[ 3 ][ 3 ] = res1corr*coreRes_Endcap_Xe;
m_cFit[ 3 ][ 4 ] = res2corr*tailRes;
m_cFit[ 4 ][ 0 ] = effcorr*eff_BarrelA_Ar; // Barrel A-side Argon
m_cFit[ 4 ][ 1 ] = err_Barrel_Ar;
m_cFit[ 4 ][ 2 ] = coreFrac_Ar;
m_cFit[ 4 ][ 2 ] = coreFracBarrel_Ar;
m_cFit[ 4 ][ 3 ] = res1corr*coreRes_Barrel_Ar;
m_cFit[ 4 ][ 4 ] = res2corr*tailRes;
m_cFit[ 5 ][ 0 ] = effcorr*eff_EndcapA_Ar; // Endcap A-side Argon
m_cFit[ 5 ][ 1 ] = err_Endcap_Ar;
m_cFit[ 5 ][ 2 ] = coreFrac_Ar;
m_cFit[ 5 ][ 2 ] = coreFracEndcap_Ar;
m_cFit[ 5 ][ 3 ] = res1corr*coreRes_Endcap_Ar;
m_cFit[ 5 ][ 4 ] = res2corr*tailRes;
m_cFit[ 6 ][ 0 ] = effcorr*eff_BarrelC_Ar; // Barrel C-side Argon
m_cFit[ 6 ][ 1 ] = err_Barrel_Ar;
m_cFit[ 6 ][ 2 ] = coreFrac_Ar;
m_cFit[ 6 ][ 2 ] = coreFracBarrel_Ar;
m_cFit[ 6 ][ 3 ] = res1corr*coreRes_Barrel_Ar;
m_cFit[ 6 ][ 4 ] = res2corr*tailRes;
m_cFit[ 7 ][ 0 ] = effcorr*eff_EndcapC_Ar; // Endcap C-side Argon
m_cFit[ 7 ][ 1 ] = err_Endcap_Ar;
m_cFit[ 7 ][ 2 ] = coreFrac_Ar;
m_cFit[ 7 ][ 2 ] = coreFracEndcap_Ar;
m_cFit[ 7 ][ 3 ] = res1corr*coreRes_Endcap_Ar;
m_cFit[ 7 ][ 4 ] = res2corr*tailRes;
......@@ -385,8 +391,15 @@ StatusCode TRTFastDigitizationTool::produceDriftCircles() {
if ( m_useTrtElectronPidTool ) {
double position = ( fabs(BEC) == 1 ? hitGlobalPosition.z() : hitGlobalPosition.perp() );
// double probability = getProbHT( particleEncoding, kineticEnergy, straw_id, driftRadiusLoc, position );
double probability = getProbHT( particleEncoding, kineticEnergy, straw_id, smearedRadius, position);
double probability;
if ( abs( particleEncoding ) == 11 && kineticEnergy > 5000. ) { // electron
probability = m_trtHighProbabilityBoostEle*getProbHT( particleEncoding, kineticEnergy, straw_id, smearedRadius, position);
}
else{
probability = m_trtHighProbabilityBoostBkg*getProbHT( particleEncoding, kineticEnergy, straw_id, smearedRadius, position);
}
// double probability = getProbHT( particleEncoding, kineticEnergy, straw_id, smearedRadius, position);
if ( CLHEP::RandFlat::shoot( m_randomEngine ) < probability ) word |= maskHT;
}
else {
......
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