Commit e3d4d672 authored by Johannes Elmsheuser's avatar Johannes Elmsheuser
Browse files

Merge branch 'R22_MVATES_with0p_FINAL' into 'master'

tauRecTools: deploy final combined TES and MVA TES calibrations

See merge request atlas/athena!45237
parents 2eb3da49 619250e4
......@@ -631,7 +631,8 @@ def getMvaTESEvaluator():
_name = sPrefix + 'MvaTESEvaluator'
from tauRecTools.tauRecToolsConf import MvaTESEvaluator
MvaTESEvaluator = MvaTESEvaluator(name = _name,
WeightFileName = tauFlags.tauRecMvaTESConfig())
WeightFileName = tauFlags.tauRecMvaTESConfig(),
WeightFileName0p = tauFlags.tauRec0pMvaTESConfig())
cached_instances[_name] = MvaTESEvaluator
return MvaTESEvaluator
......@@ -841,7 +842,8 @@ def getTauAODSelector():
_name = sPrefix + 'TauAODSelector'
from tauRecTools.tauRecToolsConf import TauAODSelector
myTauAODSelector = TauAODSelector( name=_name,
MinTauPt = tauFlags.tauRecMinPt() )
myTauAODSelector = TauAODSelector(name=_name,
Min0pTauPt = tauFlags.tauRec0pMinPt(),
MinTauPt = tauFlags.tauRecMinPt())
cached_instances[_name] = myTauAODSelector
return myTauAODSelector
......@@ -124,18 +124,25 @@ class tauRecCalibrateLCConfig(JobProperty):
StoredValue='CaloTES_R22_Round2.5.root'
class tauRecMvaTESConfig(JobProperty):
"""Config file for MvaTESEvaluator
"""Config file for >=1p taus for MvaTESEvaluator
"""
statusOn=True
allowedTypes=['string']
StoredValue='MvaTES_Round2_v1.root'
StoredValue='MvaTES_R22_Round2.5.root'
class tauRec0pMvaTESConfig(JobProperty):
"""Config file for 0p taus for MvaTESEvaluator
"""
statusOn=True
allowedTypes=['string']
StoredValue='MvaTES_0p_R22_Round2.5.root'
class tauRecCombinedTESConfig(JobProperty):
"""Config file for TauCombinedTES
"""
statusOn=True
allowedTypes=['string']
StoredValue='CombinedTES_R22_v0.root'
StoredValue='CombinedTES_R22_Round2.5.root'
class tauRecTauJetRNNConfig(JobProperty):
"""Config files for TauJetRNNEvaluator jet ID
......@@ -187,11 +194,18 @@ class tauRecSeedMaxEta(JobProperty):
StoredValue=2.5
class tauRecMinPt(JobProperty):
""" minimum tau pt (MVA TES calibration)
""" minimum tau pt for >=1p taus (MVA TES calibration)
"""
statusOn=True
allowedTypes=['float']
StoredValue=7.*Units.GeV
class tauRec0pMinPt(JobProperty):
""" minimum tau pt for 0p taus (MVA TES calibration)
"""
statusOn=True
allowedTypes=['float']
StoredValue=10.*Units.GeV
StoredValue=7.5*Units.GeV
class tauRecMaxNTracks(JobProperty):
""" maximum number of classifiedCharged tracks for a tau candidate
......@@ -285,7 +299,7 @@ class tauRecFlags(JobPropertyContainer):
jobproperties.add_Container(tauRecFlags)
# I want always the following flags in the Rec container
_list_tau=[Enabled,doTauRec,isStandalone,tauRecSeedJetCollection,tauRecToolsCVMFSPath,doTJVA,doTJVA_Tiebreak,associateLRT,classifyLRT,removeDuplicateCoreTracks,useGhostTracks,ghostTrackDR,tauRecRNNTrackClassification,tauRecRNNTrackClassificationConfig,tauRecDecayModeNNClassifierConfig,tauRecCalibrateLCConfig,tauRecMvaTESConfig,tauRecCombinedTESConfig,tauRecTauJetRNNConfig,tauRecTauJetRNNWPConfig,tauRecTauEleRNNConfig,tauRecTauEleRNNWPConfig,tauRecPi0ScoreConfig,tauRecSeedMinPt,tauRecSeedMaxEta,tauRecMinPt,tauRecMaxNTracks,tauRecToolsDevToolList,tauRecToolsDevToolListProcessor,doRunTauDiscriminant,doPanTau,doPi0,pi0EtCuts,pi0MVACuts_1prong,pi0MVACuts_mprong,shotPtCut_1Photon,shotPtCut_2Photons,useOldVertexFitterAPI]
_list_tau=[Enabled,doTauRec,isStandalone,tauRecSeedJetCollection,tauRecToolsCVMFSPath,doTJVA,doTJVA_Tiebreak,associateLRT,classifyLRT,removeDuplicateCoreTracks,useGhostTracks,ghostTrackDR,tauRecRNNTrackClassification,tauRecRNNTrackClassificationConfig,tauRecDecayModeNNClassifierConfig,tauRecCalibrateLCConfig,tauRecMvaTESConfig,tauRec0pMvaTESConfig,tauRecCombinedTESConfig,tauRecTauJetRNNConfig,tauRecTauJetRNNWPConfig,tauRecTauEleRNNConfig,tauRecTauEleRNNWPConfig,tauRecPi0ScoreConfig,tauRecSeedMinPt,tauRecSeedMaxEta,tauRecMinPt,tauRec0pMinPt,tauRecMaxNTracks,tauRecToolsDevToolList,tauRecToolsDevToolListProcessor,doRunTauDiscriminant,doPanTau,doPi0,pi0EtCuts,pi0MVACuts_1prong,pi0MVACuts_mprong,shotPtCut_1Photon,shotPtCut_2Photons,useOldVertexFitterAPI]
for j in _list_tau:
jobproperties.tauRecFlags.add_JobProperty(j)
del _list_tau
......
......@@ -13,6 +13,7 @@
MvaTESEvaluator::MvaTESEvaluator(const std::string& name)
: TauRecToolBase(name) {
declareProperty("WeightFileName", m_sWeightFileName = "");
declareProperty("WeightFileName0p", m_sWeightFileName0p = "");
}
//_____________________________________________________________________________
......@@ -25,6 +26,13 @@ StatusCode MvaTESEvaluator::initialize(){
const std::string weightFile = find_file(m_sWeightFileName);
m_bdtHelper = std::make_unique<tauRecTools::BDTHelper>();
ATH_CHECK(m_bdtHelper->initialize(weightFile));
if(!m_sWeightFileName0p.empty()) {
const std::string weightFile0p = find_file(m_sWeightFileName0p);
m_bdtHelper0p = std::make_unique<tauRecTools::BDTHelper>();
ATH_CHECK(m_bdtHelper0p->initialize(weightFile0p));
}
return StatusCode::SUCCESS;
}
......@@ -43,17 +51,24 @@ StatusCode MvaTESEvaluator::execute(xAOD::TauJet& xTau) const {
availableVars.insert( std::make_pair("TauJetsAuxDyn.ClustersMeanFirstEngDens", &vars.first_eng_dens) );
availableVars.insert( std::make_pair("TauJetsAuxDyn.ClustersMeanSecondLambda", &vars.second_lambda) );
availableVars.insert( std::make_pair("TauJetsAuxDyn.ClustersMeanPresamplerFrac", &vars.presampler_frac) );
availableVars.insert( std::make_pair("TauJetsAuxDyn.ClustersMeanEMProbability", &vars.eprobability) );
availableVars.insert( std::make_pair("TauJetsAuxDyn.ClustersMeanEMProbability", &vars.eprobability) );
availableVars.insert( std::make_pair("TauJetsAuxDyn.ptIntermediateAxisEM/TauJetsAuxDyn.ptIntermediateAxis", &vars.ptEM_D_ptLC) );
availableVars.insert( std::make_pair("TauJetsAuxDyn.ptCombined", &vars.ptCombined) );
availableVars.insert( std::make_pair("TauJetsAuxDyn.ptIntermediateAxis/TauJetsAuxDyn.ptCombined", &vars.ptLC_D_ptCombined) );
availableVars.insert( std::make_pair("TauJetsAuxDyn.ptPanTauCellBased/TauJetsAuxDyn.ptCombined", &vars.ptConstituent_D_ptCombined) );
availableVars.insert( std::make_pair("TauJetsAuxDyn.etaPanTauCellBased", &vars.etaConstituent) );
availableVars.insert( std::make_pair("TauJetsAuxDyn.PanTau_BDTValue_1p0n_vs_1p1n", &vars.PanTauBDT_1p0n_vs_1p1n) );
availableVars.insert( std::make_pair("TauJetsAuxDyn.PanTau_BDTValue_1p1n_vs_1pXn", &vars.PanTauBDT_1p1n_vs_1pXn) );
availableVars.insert( std::make_pair("TauJetsAuxDyn.PanTau_BDTValue_3p0n_vs_3pXn", &vars.PanTauBDT_3p0n_vs_3pXn) );
availableVars.insert( std::make_pair("TauJetsAuxDyn.nTracks", &vars.nTracks) );
availableVars.insert( std::make_pair("TauJetsAuxDyn.PFOEngRelDiff", &vars.PFOEngRelDiff) );
availableVars.insert( std::make_pair("TauJetsAuxDyn.etaPanTauCellBased", &vars.etaConstituent) );
if(m_bdtHelper0p && xTau.nTracks()==0) {
availableVars.insert( std::make_pair("log(TauJetsAuxDyn.ptCombined)", &vars.logPtCombined) );
availableVars.insert( std::make_pair("TauJetsAuxDyn.LeadClusterFrac", &vars.lead_cluster_frac) );
availableVars.insert( std::make_pair("TauJetsAuxDyn.centFrac", &vars.centFrac) );
}
else {
availableVars.insert( std::make_pair("TauJetsAuxDyn.ptCombined", &vars.ptCombined) );
availableVars.insert( std::make_pair("TauJetsAuxDyn.PanTau_BDTValue_1p0n_vs_1p1n", &vars.PanTauBDT_1p0n_vs_1p1n) );
availableVars.insert( std::make_pair("TauJetsAuxDyn.PanTau_BDTValue_1p1n_vs_1pXn", &vars.PanTauBDT_1p1n_vs_1pXn) );
availableVars.insert( std::make_pair("TauJetsAuxDyn.PanTau_BDTValue_3p0n_vs_3pXn", &vars.PanTauBDT_3p0n_vs_3pXn) );
availableVars.insert( std::make_pair("TauJetsAuxDyn.nTracks", &vars.nTracks) );
availableVars.insert( std::make_pair("TauJetsAuxDyn.PFOEngRelDiff", &vars.PFOEngRelDiff) );
}
}
else {
availableVars.insert( std::make_pair("TrigTauJetsAuxDyn.mu", &vars.mu) );
......@@ -80,6 +95,16 @@ StatusCode MvaTESEvaluator::execute(xAOD::TauJet& xTau) const {
xTau.detail(xAOD::TauJetParameters::ClustersMeanPresamplerFrac, vars.presampler_frac);
if(!inTrigger()) {
static const SG::AuxElement::ConstAccessor<float> acc_ptCombined("ptCombined");
float ptCombined = acc_ptCombined(xTau);
if(ptCombined==0.) {
xTau.setP4(xAOD::TauJetParameters::FinalCalib, 1., xTau.etaPanTauCellBased(), xTau.phiPanTauCellBased(), 0.);
// apply MVA calibration as default
xTau.setP4(1., xTau.etaPanTauCellBased(), xTau.phiPanTauCellBased(), 0.);
return StatusCode::SUCCESS;
}
static const SG::AuxElement::ConstAccessor<int> acc_nVtxPU("nVtxPU");
vars.nVtxPU = acc_nVtxPU(xTau);
......@@ -87,41 +112,48 @@ StatusCode MvaTESEvaluator::execute(xAOD::TauJet& xTau) const {
vars.rho = acc_rho(xTau);
static const SG::AuxElement::ConstAccessor<float> acc_ptIntermediateAxisEM("ptIntermediateAxisEM");
float ptIntermediateAxisEM = acc_ptIntermediateAxisEM(xTau);
vars.ptEM_D_ptLC = (xTau.ptIntermediateAxis()!=0.) ? ptIntermediateAxisEM/xTau.ptIntermediateAxis() : 0.;
float ptEM = acc_ptIntermediateAxisEM(xTau);
float ptLC = xTau.ptIntermediateAxis();
// Retrieve pantau and LC-precalib TES
vars.etaConstituent = xTau.etaPanTauCellBased();
float ptLC = xTau.ptDetectorAxis();
float ptConstituent = xTau.ptPanTauCellBased();
static const SG::AuxElement::ConstAccessor<float> acc_ptCombined("ptCombined");
vars.ptCombined = acc_ptCombined(xTau);
vars.etaConstituent = xTau.etaPanTauCellBased();
vars.ptEM_D_ptLC = (ptLC != 0.) ? ptEM / ptLC : 0.;
vars.ptLC_D_ptCombined = ptLC / ptCombined;
vars.ptConstituent_D_ptCombined = ptConstituent / ptCombined;
float ptMVA = 0.;
if(m_bdtHelper0p && xTau.nTracks()==0) {
vars.logPtCombined = std::log(ptCombined);
if(vars.ptCombined>0.) {
vars.ptLC_D_ptCombined = ptLC / vars.ptCombined;
vars.ptConstituent_D_ptCombined = ptConstituent / vars.ptCombined;
static const SG::AuxElement::ConstAccessor<float> acc_LeadClusterFrac("LeadClusterFrac");
vars.lead_cluster_frac = acc_LeadClusterFrac(xTau);
xTau.detail(xAOD::TauJetParameters::centFrac, vars.centFrac);
ptMVA = float( ptCombined * m_bdtHelper0p->getResponse(availableVars) );
}
else {
xTau.setP4(xAOD::TauJetParameters::FinalCalib, 1., vars.etaConstituent, xTau.phiPanTauCellBased(), 0.);
// apply MVA calibration as default
xTau.setP4(1., vars.etaConstituent, xTau.phiPanTauCellBased(), 0.);
return StatusCode::SUCCESS;
vars.ptCombined = ptCombined;
// Retrieve substructure info
static const SG::AuxElement::ConstAccessor<float> acc_PanTauBDT_1p0n_vs_1p1n("PanTau_BDTValue_1p0n_vs_1p1n");
static const SG::AuxElement::ConstAccessor<float> acc_PanTauBDT_1p1n_vs_1pXn("PanTau_BDTValue_1p1n_vs_1pXn");
static const SG::AuxElement::ConstAccessor<float> acc_PanTauBDT_3p0n_vs_3pXn("PanTau_BDTValue_3p0n_vs_3pXn");
// BDT values are initialised to -1111, while actual scores (when evaluated) are within [-5,1], so take max between BDT score and -5-epsilon
vars.PanTauBDT_1p0n_vs_1p1n = std::max(acc_PanTauBDT_1p0n_vs_1p1n(xTau), -5.1f);
vars.PanTauBDT_1p1n_vs_1pXn = std::max(acc_PanTauBDT_1p1n_vs_1pXn(xTau), -5.1f);
vars.PanTauBDT_3p0n_vs_3pXn = std::max(acc_PanTauBDT_3p0n_vs_3pXn(xTau), -5.1f);
vars.nTracks = (float)xTau.nTracks();
xTau.detail(xAOD::TauJetParameters::PFOEngRelDiff, vars.PFOEngRelDiff);
ptMVA = float( ptCombined * m_bdtHelper->getResponse(availableVars) );
}
// Retrieve substructure info
static const SG::AuxElement::ConstAccessor<float> acc_PanTauBDT_1p0n_vs_1p1n("PanTau_BDTValue_1p0n_vs_1p1n");
static const SG::AuxElement::ConstAccessor<float> acc_PanTauBDT_1p1n_vs_1pXn("PanTau_BDTValue_1p1n_vs_1pXn");
static const SG::AuxElement::ConstAccessor<float> acc_PanTauBDT_3p0n_vs_3pXn("PanTau_BDTValue_3p0n_vs_3pXn");
vars.PanTauBDT_1p0n_vs_1p1n = acc_PanTauBDT_1p0n_vs_1p1n(xTau);
vars.PanTauBDT_1p1n_vs_1pXn = acc_PanTauBDT_1p1n_vs_1pXn(xTau);
vars.PanTauBDT_3p0n_vs_3pXn = acc_PanTauBDT_3p0n_vs_3pXn(xTau);
vars.nTracks = (float)xTau.nTracks();
xTau.detail(xAOD::TauJetParameters::PFOEngRelDiff, vars.PFOEngRelDiff);
float ptMVA = float( vars.ptCombined * m_bdtHelper->getResponse(availableVars) );
if(ptMVA<1.) ptMVA=1.;
xTau.setP4(xAOD::TauJetParameters::FinalCalib, ptMVA, vars.etaConstituent, xTau.phiPanTauCellBased(), 0.);
// apply MVA calibration as default
xTau.setP4(ptMVA, vars.etaConstituent, xTau.phiPanTauCellBased(), 0.);
}
......
......@@ -8,6 +8,7 @@
TauAODSelector::TauAODSelector(const std::string& name)
: TauRecToolBase(name) {
declareProperty("Min0pTauPt", m_min0pTauPt = 0.);
declareProperty("MinTauPt", m_minTauPt = 0.);
}
......@@ -17,7 +18,12 @@ StatusCode TauAODSelector::execute(xAOD::TauJet& tau) const {
bool passThinning = true;
// selection criteria that taus must pass in order to be written to AOD
if(tau.pt() < m_minTauPt) passThinning = false;
if (tau.nTracks()==0) {
if (tau.pt() < m_min0pTauPt) passThinning = false;
}
else {
if (tau.pt() < m_minTauPt) passThinning = false;
}
static const SG::AuxElement::Accessor<char> acc_passThinning("passThinning");
acc_passThinning(tau) = passThinning;
......
......@@ -2,8 +2,8 @@
Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
*/
#ifndef TAURECTOOLSDEV_MVATESEVALUATOR_H
#define TAURECTOOLSDEV_MVATESEVALUATOR_H
#ifndef TAURECTOOLS_MVATESEVALUATOR_H
#define TAURECTOOLS_MVATESEVALUATOR_H
// tauRecTools include(s)
#include "tauRecTools/TauRecToolBase.h"
......@@ -27,39 +27,45 @@ class MvaTESEvaluator
// MVA input variables (provide all variables in float)
struct MvaInputVariables
{
float mu{0.0}; //!
float nVtxPU{0.0}; //!
float rho{0.0}; //!
float mu{0.0};
float nVtxPU{0.0};
float rho{0.0};
float center_lambda{0.0}; //!
float first_eng_dens{0.0}; //!
float second_lambda{0.0}; //!
float presampler_frac{0.0}; //!
float eprobability{0.0}; //!
float center_lambda{0.0};
float first_eng_dens{0.0};
float second_lambda{0.0};
float presampler_frac{0.0};
float eprobability{0.0};
float ptEM_D_ptLC{0.0}; //!
float ptCombined{0.0}; //!
float ptLC_D_ptCombined{0.0}; //!
float ptConstituent_D_ptCombined{0.0};//!
float etaConstituent{0.0}; //!
float ptEM_D_ptLC{0.0};
float ptCombined{0.0};
float ptLC_D_ptCombined{0.0};
float ptConstituent_D_ptCombined{0.0};
float etaConstituent{0.0};
float PanTauBDT_1p0n_vs_1p1n{0.0}; //!
float PanTauBDT_1p1n_vs_1pXn{0.0}; //!
float PanTauBDT_3p0n_vs_3pXn{0.0}; //!
float nTracks{0.0}; //!
float PFOEngRelDiff{0.0}; //!
float PanTauBDT_1p0n_vs_1p1n{0.0};
float PanTauBDT_1p1n_vs_1pXn{0.0};
float PanTauBDT_3p0n_vs_3pXn{0.0};
float nTracks{0.0};
float PFOEngRelDiff{0.0};
// for 0p
float centFrac{0.0};
float logPtCombined{0.0};
// for online calibration
float ptDetectorAxis{0.0}; //!
float etaDetectorAxis{0.0}; //!
float upsilon_cluster{0.0}; //!
float lead_cluster_frac{0.0}; //!
float ptDetectorAxis{0.0};
float etaDetectorAxis{0.0};
float upsilon_cluster{0.0};
float lead_cluster_frac{0.0};
};
std::unique_ptr<tauRecTools::BDTHelper> m_bdtHelper;
std::unique_ptr<tauRecTools::BDTHelper> m_bdtHelper0p;
// Configurable properties
std::string m_sWeightFileName;
std::string m_sWeightFileName0p;
};
#endif // TAURECTOOLSDEV_MVATESEVALUATOR_H
#endif // TAURECTOOLS_MVATESEVALUATOR_H
......@@ -22,6 +22,7 @@ public:
private:
// minimum tau pt below which taus are not written to AOD
double m_min0pTauPt;
double m_minTauPt;
};
......
run event nTopo nIdTracks nMuons nElec nTrueElec nFakeElec nPhot nTruePhot nFakePhot
330470 1183721871 761 823 5 16 0 16 36 0 36
330470 1183721871 761 828 5 16 0 16 36 0 36
330470 1183722156 360 388 1 3 0 3 12 0 12
330470 1183722158 1 0 0 0 0 0 0 0 0
330470 1183722342 394 428 0 2 0 2 15 0 15
......@@ -39,7 +39,7 @@
330470 1183738386 525 474 2 20 0 20 30 0 30
330470 1183738728 1 0 0 0 0 0 0 0 0
330470 1183738949 368 450 1 5 0 5 11 0 11
330470 1183739966 531 429 1 12 0 12 24 0 24
330470 1183739966 531 426 1 12 0 12 24 0 24
330470 1183740967 558 648 0 4 0 4 19 0 19
330470 1183741011 240 346 3 5 0 5 13 0 13
330470 1183742016 289 307 1 4 0 4 6 0 6
......@@ -55,7 +55,7 @@
330470 1183745001 320 379 0 10 0 10 12 0 12
330470 1183745791 361 400 0 19 0 19 20 0 20
330470 1183745889 371 380 1 5 0 5 10 0 10
330470 1183746019 446 476 0 7 0 7 24 0 24
330470 1183746019 446 487 0 7 0 7 24 0 24
330470 1183746343 492 493 1 3 0 3 16 0 16
330470 1183746391 364 441 2 15 0 15 20 0 20
330470 1183746668 459 379 0 7 0 7 20 0 20
......@@ -80,7 +80,7 @@
330470 1183756180 447 374 1 2 0 2 16 0 16
330470 1183756295 367 448 3 7 0 7 12 0 12
330470 1183756303 565 585 1 24 0 24 24 0 24
330470 1183756939 606 580 1 19 0 19 26 0 26
330470 1183756939 606 590 1 19 0 19 26 0 26
330470 1183756951 283 271 1 2 0 2 4 0 4
330470 1183757556 300 270 1 5 0 5 10 0 10
330470 1183758317 685 735 1 13 0 13 29 0 29
......@@ -89,7 +89,7 @@
330470 1183758819 446 527 4 24 0 24 19 0 19
330470 1183759087 476 451 3 8 0 8 19 0 19
330470 1183759951 610 726 4 18 0 18 32 0 32
330470 1183760662 421 420 1 8 0 8 18 0 18
330470 1183760662 421 421 1 8 0 8 18 0 18
330470 1183760713 430 488 0 11 0 11 21 0 21
330470 1183761092 301 436 3 6 0 6 8 0 8
330470 1183762287 384 433 3 4 0 4 13 0 13
......@@ -101,7 +101,7 @@
330470 1183764842 585 644 1 15 0 15 29 0 29
330470 1183765366 464 521 1 6 0 6 10 0 10
330470 1183765436 301 213 0 5 0 5 5 0 5
330470 1183767528 668 642 1 9 0 9 28 0 28
330470 1183767528 668 645 1 9 0 9 28 0 28
330470 1183767718 467 452 2 15 0 15 17 0 17
330470 1183768132 410 431 2 4 0 4 15 0 15
330470 1183768747 598 593 3 24 0 24 25 0 25
......@@ -176,7 +176,7 @@
330470 1183797746 356 340 1 1 0 1 7 0 7
330470 1183797788 582 502 2 10 0 10 34 0 34
330470 1183798102 796 914 4 12 0 12 37 0 37
330470 1183798170 408 354 2 5 0 5 14 0 14
330470 1183798170 408 355 2 5 0 5 14 0 14
330470 1183799182 527 499 0 3 0 3 22 0 22
330470 1183799941 511 496 1 14 0 14 17 0 17
330470 1183800136 567 652 3 13 0 13 33 0 33
......@@ -193,7 +193,7 @@
330470 1183806526 264 319 1 2 0 2 7 0 7
330470 1183807145 492 455 0 15 0 15 33 0 33
330470 1183807361 528 595 3 9 0 9 27 0 27
330470 1183807825 540 583 1 14 0 14 30 0 30
330470 1183807825 540 584 1 14 0 14 30 0 30
330470 1183808819 67 0 0 0 0 0 4 0 4
330470 1183809482 344 321 0 7 0 7 19 0 19
330470 1183810229 534 489 2 9 0 9 31 0 31
......@@ -265,8 +265,8 @@
330470 1183841864 392 328 1 4 0 4 16 0 16
330470 1183842339 196 156 0 0 0 0 3 0 3
330470 1183842483 550 508 0 5 0 5 19 0 19
330470 1183842622 404 442 1 9 0 9 21 0 21
330470 1183842772 432 456 1 16 0 16 23 0 23
330470 1183842622 404 444 1 9 0 9 21 0 21
330470 1183842772 432 457 1 16 0 16 23 0 23
330470 1183843837 357 374 0 7 0 7 13 0 13
330470 1183844385 400 394 1 4 0 4 8 0 8
330470 1183846886 385 267 0 4 0 4 20 0 20
......@@ -333,9 +333,9 @@
330470 1183878363 529 582 5 15 0 15 26 0 26
330470 1183879080 615 645 3 9 0 9 30 0 30
330470 1183879154 597 627 4 8 0 8 28 0 28
330470 1183879547 423 433 2 0 0 0 13 0 13
330470 1183879547 423 439 2 0 0 0 13 0 13
330470 1183879670 489 524 2 13 0 13 21 0 21
330470 1183879957 494 577 0 12 0 12 26 0 26
330470 1183879957 494 578 0 12 0 12 26 0 26
330470 1183880152 349 453 3 1 0 1 16 0 16
330470 1183880330 714 570 4 25 0 25 52 0 52
330470 1183880565 526 370 1 10 0 10 35 0 35
......@@ -380,7 +380,7 @@
330470 1183905825 411 390 2 5 0 5 13 0 13
330470 1183906093 541 525 1 5 0 5 23 0 23
330470 1183906408 465 511 2 12 0 12 17 0 17
330470 1183906803 370 324 0 22 0 22 31 0 31
330470 1183906803 370 325 0 22 0 22 31 0 31
330470 1183907843 453 481 1 10 0 10 9 0 9
330470 1183908667 350 464 1 6 0 6 9 0 9
330470 1183908690 449 527 2 5 0 5 22 0 22
......@@ -410,7 +410,7 @@
330470 1183926015 402 365 0 2 0 2 19 0 19
330470 1183927700 330 321 3 6 0 6 4 0 4
330470 1183927897 390 345 0 3 0 3 10 0 10
330470 1183929011 454 449 0 12 0 12 30 0 30
330470 1183929011 454 452 0 12 0 12 30 0 30
330470 1183929579 449 385 3 2 0 2 16 0 16
330470 1183929756 645 749 2 14 0 14 28 0 28
330470 1183930152 444 419 2 4 0 4 13 0 13
......@@ -420,15 +420,15 @@
330470 1183932465 456 541 3 11 0 11 17 0 17
330470 1183933264 514 449 2 4 0 4 10 0 10
330470 1183934061 556 608 2 15 0 15 31 0 31
330470 1183934188 559 640 0 11 0 11 28 0 28
330470 1183934188 559 638 0 11 0 11 28 0 28
330470 1183935176 505 634 1 7 0 7 21 0 21
330470 1183935243 406 422 3 15 0 15 26 0 26
330470 1183936048 505 441 0 13 0 13 24 0 24
330470 1183936048 505 442 0 13 0 13 24 0 24
330470 1183937915 358 330 0 5 0 5 9 0 9
330470 1183937927 530 536 2 8 0 8 24 0 24
330470 1183938712 427 382 1 2 0 2 20 0 20
330470 1183938824 345 393 2 3 0 3 11 0 11
330470 1183939219 533 496 3 9 0 9 16 0 16
330470 1183938824 345 394 2 3 0 3 11 0 11
330470 1183939219 533 500 3 9 0 9 16 0 16
330470 1183939285 273 161 0 5 0 5 8 0 8
330470 1183939881 561 506 3 6 0 6 22 0 22
330470 1183941479 270 333 0 2 0 2 6 0 6
......@@ -439,16 +439,16 @@
330470 1183949177 403 463 1 7 0 7 17 0 17
330470 1183949782 548 520 2 12 0 12 20 0 20
330470 1183952907 561 641 4 9 0 9 16 0 16
330470 1183953399 578 474 1 13 0 13 31 0 31
330470 1183953399 578 478 1 13 0 13 31 0 31
330470 1183953421 469 329 3 3 0 3 11 0 11
330470 1183953881 339 367 2 2 0 2 6 0 6
330470 1183954827 344 429 1 7 0 7 14 0 14
330470 1183957781 3 0 0 0 0 0 0 0 0
330470 1183958083 367 377 1 10 0 10 13 0 13
330470 1183960085 586 566 4 7 0 7 13 0 13
330470 1183960085 586 580 4 7 0 7 13 0 13
330470 1183960556 370 350 1 4 0 4 8 0 8
330470 1183961006 467 453 1 15 0 15 19 0 19
330470 1183961573 616 709 4 11 0 11 22 0 22
330470 1183961573 616 715 4 11 0 11 22 0 22
330470 1183961597 351 258 1 3 0 3 14 0 14
330470 1183963195 522 566 1 13 0 13 20 0 20
330470 1183969128 303 350 1 12 0 12 17 0 17
......@@ -465,7 +465,7 @@
330470 1183983079 512 545 1 7 0 7 29 0 29
330470 1183983113 387 382 1 3 0 3 17 0 17
330470 1183984897 342 292 0 14 0 14 15 0 15
330470 1183985311 421 567 1 11 0 11 13 0 13
330470 1183985311 421 570 1 11 0 11 13 0 13
330470 1183987027 468 480 0 4 0 4 17 0 17
330470 1183988197 390 420 4 4 0 4 19 0 19
330470 1183991258 380 392 2 1 0 1 13 0 13
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment