|
ATLAS Offline Software
|
Go to the documentation of this file.
45 TString
fileName =
"/eos/atlas/atlascerngroupdisk/perf-jets/ReferenceFiles/DAOD_JETM2.Wprime.pool.root";
50 bool runSystematics=
true;
52 Info(
APP_NAME,
"==============================================" );
56 Info(
APP_NAME,
" $> %s -n X | X = number of events you want to run on",
APP_NAME );
57 Info(
APP_NAME,
" $> %s -e X | X = specific number of the event to run on - for debugging",
APP_NAME );
62 Info(
APP_NAME,
"==============================================" );
66 Info(
APP_NAME,
"No arguments - using default file" );
78 if(
options.find(
"-f")!=std::string::npos){
79 for(
int ipos=0; ipos<
argc ; ipos++ ) {
80 if(std::string(
argv[ipos]).compare(
"-f")==0){
88 if(
options.find(
"-event")!=std::string::npos){
89 for(
int ipos=0; ipos<
argc ; ipos++ ) {
92 Info(
APP_NAME,
"Argument (-event) : Running only on event # %i", ievent );
98 if(
options.find(
"-m")!=std::string::npos){
99 for(
int ipos=0; ipos<
argc ; ipos++ ) {
102 Info(
APP_NAME,
"Argument (-m) : IsMC = %i", m_isMC );
108 if(
options.find(
"-n")!=std::string::npos){
109 for(
int ipos=0; ipos<
argc ; ipos++ ) {
118 if(
options.find(
"-noSys")!=std::string::npos){
119 runSystematics=
false;
120 Info(
APP_NAME,
"Argument (-noSys) : Setting runSystematics");
123 if(
options.find(
"-v")!=std::string::npos){
125 Info(
APP_NAME,
"Argument (-v) : Setting verbose");
133 StatusCode::enableFailure();
139 TChain *
chain =
new TChain (
"CollectionTree",
"CollectionTree");
150 Long64_t
entries =
event.getEntries();
153 std::unique_ptr<TFile>
outputFile(TFile::Open(
"output_JSSWTopTaggerANN.root",
"recreate"));
154 int pass,truthLabel,
idx;
156 TTree*
Tree =
new TTree(
"tree",
"test_tree" );
157 Tree->Branch(
"pass", &pass,
"pass/I" );
158 Tree->Branch(
"sf", &
sf,
"sf/F" );
159 Tree->Branch(
"pt", &
pt,
"pt/F" );
160 Tree->Branch(
"m", &
m,
"m/F" );
161 Tree->Branch(
"eta", &
eta,
"eta/F" );
162 Tree->Branch(
"idx", &
idx,
"idx/I" );
163 Tree->Branch(
"truthLabel", &truthLabel,
"truthLabel/I" );
165 std::unique_ptr<JetUncertaintiesTool> jetUncToolSF(
new JetUncertaintiesTool((
"JetUncProvider_SF")));
166 std::vector<CP::SystematicSet> jetUnc_sysSets;
168 ANA_CHECK( jetUncToolSF->setProperty(
"JetDefinition",
"AntiKt10LCTopoTrimmedPtFrac5SmallR20") );
169 ANA_CHECK( jetUncToolSF->setProperty(
"Path",
"/eos/user/g/gang/public/BoostedJetTaggers/JSSWTopTaggerANN/") );
170 ANA_CHECK( jetUncToolSF->setProperty(
"ConfigFile",
"TagSFUncert_JSSANNTagger_AntiKt10LCTopoTrimmed.config") );
171 ANA_CHECK( jetUncToolSF->setProperty(
"MCType",
"MC16a") );
174 std::vector<std::string> pulls = {
"__1down",
"__1up"};
176 const std::set<std::string> sysNames = jetUnc_sysSet.
getBaseNames();
177 for (
const std::string &
sysName: sysNames) {
178 for (
const std::string &
pull : pulls) {
194 std::cout<<
"Initializing JSSWTopTaggerANN Tagger"<<std::endl;
199 ANA_CHECK( m_Tagger.
setProperty(
"ConfigFile",
"JSSANN80Tagger_AntiKt10UFOCSSKSoftDrop_Jan22.dat") );
204 std::cout <<
"Total Events in File : " <<
entries << std::endl;
213 event.getEntry(
entry );
217 if(
event.
retrieve( evtInfo,
"EventInfo" ) != StatusCode::SUCCESS){
220 if(ievent!=-1 &&
static_cast <int> (evtInfo->
eventNumber())!=ievent) {
226 if(
event.
retrieve( myJets,
"AntiKt10UFOCSSKSoftDropBeta100Zcut10Jets" ) != StatusCode::SUCCESS)
231 std::unique_ptr<xAOD::JetContainer> shallowJets(jets_shallowCopy.first);
232 std::unique_ptr<xAOD::ShallowAuxContainer> shallowAux(jets_shallowCopy.second);
238 std::cout <<
"Testing ANN Tagger " << std::endl;
239 std::cout <<
"jet pt = " << jetSC->pt() << std::endl;
240 std::cout <<
"RunningTag : " << jetSC->getAttribute<
bool>(
"ANNWContained80_Tagged") << std::endl;
241 std::cout <<
"Printing jet score : " << jetSC->auxdata<
float>(
"ANNWContained80_PassScore") << std::endl;
242 std::cout <<
"result masspass = " << jetSC->getAttribute<
bool>(
"ANNWContained80_PassMass") << std::endl;
244 truthLabel = jetSC->auxdata<
int>(
"R10TruthLabel_R21Precision_2022v1");
246 pass = jetSC->getAttribute<
bool>(
"ANNWContained80_Tagged");
247 sf = jetSC->auxdata<
float>(
"ANNWContained80_SF");
257 if (
pt/1.
e3 > 350 && std::abs(
eta) < 2.0 && pass ) {
258 bool validForUncTool = (
pt/1.e3 >= 150 &&
pt/1.e3 < 2500 );
259 validForUncTool &= (
m/
pt >= 0 &&
m/
pt <= 1 );
260 validForUncTool &= ( std::abs(
eta) < 2 );
261 std::cout <<
"Nominal SF=" <<
sf <<
" truthLabel=" << truthLabel <<
" (1: t->qqb)" << std::endl;
262 if( validForUncTool ){
267 std::cout << sysSet.name() <<
" " << jetSC->auxdata<
float>(
"ANNTagger_SF") << std::endl;
275 Info(
APP_NAME,
"===>>> done processing event #%i, run #%i %i events processed so far <<<===",
static_cast< int >( evtInfo->
eventNumber() ),
static_cast< int >( evtInfo->
runNumber() ),
static_cast< int >(
entry + 1 ) );
291 std::cout<<std::endl<<std::endl;
292 std::cout<<
"Smart Slimming Checker :"<<std::endl;
294 std::cout<<std::endl<<std::endl;
std::pair< int, int > compare(const AmgSymMatrix(N) &m1, const AmgSymMatrix(N) &m2, double precision=1e-9, bool relative=false)
compare two matrices, returns the indices of the first element that fails the condition,...
uint64_t eventNumber() const
The current event's event number.
ReadStats & stats()
Access the object belonging to the current thread.
Scalar eta() const
pseudorapidity method
@ kAthenaAccess
Access containers/objects like Athena does.
Class to wrap a set of SystematicVariations.
uint32_t runNumber() const
The current event's run number.
POOL::TEvent event(POOL::TEvent::kClassAccess)
std::set< std::string > getBaseNames() const
description: get the set of base systematic names from this set
static IOStats & instance()
Singleton object accessor.
void printSmartSlimmingBranchList(bool autoIncludeLinks=false) const
Print the accessed variables, formatted for smart slimming.
int main(int argc, char *argv[])
std::pair< std::unique_ptr< T >, std::unique_ptr< ShallowAuxContainer > > shallowCopyContainer(const T &cont, [[maybe_unused]] const EventContext &ctx)
Function making a shallow copy of a constant container.
Class describing the basic event information.
A relatively simple transient store for objects created in analysis.
StatusCode retrieve(const T *&obj)
virtual StatusCode tag(const xAOD::Jet &jet) const override
Decorate single jet with tagging info.
int atoi(std::string_view str)
Helper functions to unpack numbers decoded in string into integers and doubles The strings are requir...
Error
The different types of error that can be flagged in the L1TopoRDO.
Tool for accessing xAOD files outside of Athena.
StatusCode Init(const char *appname)
Function initialising ROOT/PyROOT for using the ATLAS EDM.