ATLAS Offline Software
Loading...
Searching...
No Matches
FastJetInterfaceTool.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3*/
4
5#include "fastjet/ClusterSequenceArea.hh"
7
8#include "CxxUtils/crc64.h"
9
11
12using namespace FastJetInterface;
13
15// Constants //
17
18// process control
19const std::string FastJetInterfaceTool::m_invalidKeyReference = "INVALID_KEY";
20const unsigned int FastJetInterfaceTool::m_failedExecCtrMax = 10;
21
23// Constant Accessors //
25
26// jet algorithm dictionary
28{
30 static const FastJetInterface::algomap_t knownAlgorithms = {
31 // kt-style algorithms
32 {"default", fastjet::antikt_algorithm},
33 {"kt", fastjet::kt_algorithm},
34 {"anti-kt", fastjet::antikt_algorithm},
35 {"cambridge", fastjet::cambridge_algorithm},
36 {"genkt", fastjet::genkt_algorithm},
37 {"passive cambridge", fastjet::cambridge_for_passive_algorithm},
38 {"passive genkt", fastjet::genkt_for_passive_algorithm},
39 // add also ATLAS kt-style
40 {"Kt", fastjet::kt_algorithm},
41 {"AntiKt", fastjet::antikt_algorithm},
42 {"CamKt", fastjet::cambridge_algorithm},
43 // Plugin algorithms
44 {"CMSCone", fastjet::plugin_algorithm},
45 {"SISCone", fastjet::plugin_algorithm},
46 };
47 return knownAlgorithms;
48}
49
50// jet cluster strategies dictionary
52{
54 static const FastJetInterface::strategymap_t knownStrategies = {
55 {"default", fastjet::Best},
56 {"Best", fastjet::Best},
57 {"N2MinHeapTiled", fastjet::N2MinHeapTiled},
58 {"N2Tiled", fastjet::N2Tiled},
59 {"N2PoorTiled", fastjet::N2PoorTiled},
60 {"N2Plain", fastjet::N2Plain},
61 {"N3Dumb", fastjet::N3Dumb},
62 {"NlnN", fastjet::NlnN},
63 {"NlnN3pi", fastjet::NlnN3pi},
64 {"NlnN4pi", fastjet::NlnN4pi},
65 {"NlnNCam4pi", fastjet::NlnNCam4pi},
66 {"NlnNCam2pi2R", fastjet::NlnNCam2pi2R},
67 {"NlnNCam", fastjet::NlnNCam},
68 {"plugin_strategy", fastjet::plugin_strategy},
69 };
70 return knownStrategies;
71}
72
73// recombination schemes dictionary
75{
77 static const FastJetInterface::schememap_t knownRecombinationSchemes = {
78 {"default", fastjet::E_scheme},
79 {"E", fastjet::E_scheme},
80 {"pt", fastjet::pt_scheme},
81 {"pt2", fastjet::pt2_scheme},
82 {"Et", fastjet::Et_scheme},
83 {"Et2", fastjet::Et2_scheme},
84 {"BIpt", fastjet::BIpt_scheme},
85 {"BIpt2", fastjet::BIpt2_scheme},
86 };
87 return knownRecombinationSchemes;
88}
89
90// SIS Cone split merge scale dictionary
92{
93#ifndef XAOD_STANDALONE
95 static const FastJetInterface::splitMergeScaleMap_t knownSplitMergeScales = {
96 {"default", fastjet::SISConePlugin::SM_pttilde},
97 {"pttilde", fastjet::SISConePlugin::SM_pttilde},
98 {"PtTilde", fastjet::SISConePlugin::SM_pttilde},
99 {"Pt", fastjet::SISConePlugin::SM_pt},
100 {"Et", fastjet::SISConePlugin::SM_Et},
101 {"mt", fastjet::SISConePlugin::SM_mt},
102 };
103#else
104 static const FastJetInterface::splitMergeScaleMap_t knownSplitMergeScales;
105#endif
106 return knownSplitMergeScales;
107}
108
109// jet area dictionary
111{
113 static const FastJetInterface::areamap_t knownAreas = {
114 {"default", fastjet::voronoi_area},
115 {"ActiveArea", fastjet::active_area},
116 {"ActiveAreaExplicitGhost", fastjet::active_area_explicit_ghosts},
117 {"PassiveArea", fastjet::passive_area},
118 {"1GhostPassiveArea", fastjet::one_ghost_passive_area},
119 {"VoronoiArea", fastjet::voronoi_area},
120 };
121 return knownAreas;
122}
123
124
126// Tool Constructors & Destructor //
128
130 : asg::AsgTool(n)
131 // jet clustering and jet definition --- ////////// jet clustering
132 , m_clusterSequenceType("ClusterSequence") // <--{ not used right now!
133 , m_jetAlgorithmType("anti-kt") //
134 , m_clusterStrategyType("Best") //
136 , m_CMS_seedThreshold(15.) //
137 , m_SIS_overlapThreshold(0.75) //
138 , m_SIS_nPass(0) //
139 , m_SIS_protojetPtMin(0.0) //
140 , m_SIS_doCaching(false) //
141 , m_SIS_splitMergeScale_STRING("PtTilde") //
143 , m_radius(0.4) //
144 , m_inclusive(true) //
145 , m_exclusiveDcut(0.5) //
146 , m_exclusiveNjets(3) //
147 , m_pTmin(0.) //
148 // jet areas --------------------------- ////////// jet areas
149 , m_doJetArea(false) //
150 , m_jetAreaDefinitionType("VoronoiArea") //
151 // Voronoi area specs // -- Voronoi
153 // ghosted area specs // -- ghosted -- //
154 , m_ghostedMaxRap(fastjet::gas::def_ghost_maxrap) //
156 , m_ghostedRepeat(fastjet::gas::def_repeat) //
157 , m_ghostedArea(fastjet::gas::def_ghost_area) //
158 , m_ghostedGridScatter(fastjet::gas::def_grid_scatter) //
159 , m_ghostedKtScatter(fastjet::gas::def_pt_scatter) //
160 , m_ghostedMeanKt(fastjet::gas::def_mean_ghost_pt) //
161 // process control ----------------------///////////////////
162 , m_failedExecCtr(0)
163 // presets ////////// private data presets
164 , m_jetDefinition((fastjet::JetDefinition*)nullptr)
165 , m_clusterSequence((fastjet::ClusterSequence*)nullptr)
166 , m_areaDefinition((fastjet::AreaDefinition*)nullptr)
167 , m_baseRNDSeed (0)
168 , m_userRNDSeed (0)
169{
170 //declareInterface<IFastJetInterfaceTool>(this);
171 // setup choices
172 // declareProperty("ClusterSequence",m_clusterSequenceType);
174 // parameters for kt-style jets
177 // parameters for CMS cone jets
178 declareProperty("CMS_SeedThreshold",m_CMS_seedThreshold);
179 // parameters for SIS cone jets
180 declareProperty("SIS_OverlapThreshold",m_SIS_overlapThreshold);
181 declareProperty("SIS_NumPassMax",m_SIS_nPass);
182 declareProperty("SIS_ProtojetPtMin",m_SIS_protojetPtMin);
183 declareProperty("SIS_DoCaching",m_SIS_doCaching);
184 declareProperty("SIS_SplitMergeScale",m_SIS_splitMergeScale_STRING);
185 declareProperty("SIS_SplitMergeStopScale",m_SIS_splitMergeStopScale);
186 // parameters for jet finders/jet definition
187 declareProperty("Radius",m_radius);
188 declareProperty("Inclusive",m_inclusive);
189 declareProperty("InclusivePtMin",m_pTmin);
190 declareProperty("ExclusiveDcut",m_exclusiveDcut);
191 declareProperty("ExclusiveNjets",m_exclusiveNjets);
192 // parameters for areas
193 declareProperty("CalculateJetArea",m_doJetArea);
195 declareProperty("VoronoiEffectiveRfact",m_voronoiEffectiveRfact);
196 declareProperty("GhostMaxRapidity",m_ghostedMaxRap);
197 declareProperty("GhostMinRapidity",m_ghostedMinRap);
198 declareProperty("GhostRepeats",m_ghostedRepeat);
199 declareProperty("GhostAreaSize",m_ghostedArea);
200 declareProperty("GhostGridScatter",m_ghostedGridScatter);
201 declareProperty("GhostKtScatter",m_ghostedKtScatter);
202 declareProperty("GhostMeanKt",m_ghostedMeanKt);
203
204 declareProperty("UserRNDSeed", m_userRNDSeed = 0, "Added to the base RND seed for active areas. USE WITH CARE !");
205
206 // default processor
209 // other presets (will be set/overwritten in initialize)
210 m_jetAlgorithm = fastjet::antikt_algorithm;
211 m_strategy = fastjet::Best;
212 m_areaType = fastjet::voronoi_area;
213 m_recombinationScheme = fastjet::E_scheme;
214#ifndef XAOD_STANDALONE
215 m_SIS_splitMergeScale = fastjet::SISConePlugin::SM_pttilde;
216#endif
217
218}
219
227
229// Tool Initialization //
231
233{
234 ATH_MSG_DEBUG( " initialize " );
235
236 // check requested jet algorithm
237 ATH_MSG_INFO("Algorithm type \042" << m_jetAlgorithmType << "\042");
239 {
240 msg(MSG::ERROR) << "FastJet configuration error: "
241 << "Unknown jet algorithm \042"
242 << m_jetAlgorithmType << "\042 requested"
243 << endmsg;
244 return StatusCode::FAILURE;
245 }
246 // check requested recombination scheme
247 ATH_MSG_INFO("Recombination type \042" << m_recombinationSchemeType << "\042");
249 {
250 msg(MSG::ERROR) << "FastJet configuration error: "
251 << "Unknown recombination scheme \042"
252 << m_recombinationScheme << "\042 requested"
253 << endmsg;
254 return StatusCode::FAILURE;
255 }
256 // check requested strategy
257 ATH_MSG_INFO("Cluster strategy type \042" << m_clusterStrategyType << "\042");
259 {
260 msg(MSG::ERROR) << "FastJet configuration error: "
261 << "Unknown clustering strategy \042"
262 << m_clusterStrategyType << "\042 requested" << endmsg;
263 return StatusCode::FAILURE;
264 }
265
266 // determine the type of jet algorithm we have (kt-style vs plugins)
267 enum jetAlgTypeEnum { unknown_type, Kt_type, CMS_type, SIS_type } jetAlgType = Kt_type;
268 if (m_jetAlgorithm == fastjet::plugin_algorithm)
269 {
270 if (!m_jetAlgorithmType.compare("CMSCone"))
271 jetAlgType = CMS_type;
272 else if(!m_jetAlgorithmType.compare("SISCone"))
273 jetAlgType = SIS_type;
274 else
275 jetAlgType = unknown_type;
276 }
277 if (jetAlgType == unknown_type)
278 {
279 msg(MSG::ERROR) << "FastJet configuration error: "
280 << "Unknown jet algorithm plugin \042"
281 << m_jetAlgorithmType << "\042 requested" << endmsg;
282 return StatusCode::FAILURE;
283 }
284
285#ifndef XAOD_STANDALONE
286
287 // define jets depending on the jet type
288 if (jetAlgType == CMS_type)
289 m_jetDefinition = new fastjet::JetDefinition(new fastjet::CMSIterativeConePlugin(m_radius,m_CMS_seedThreshold));
290 else if (jetAlgType == SIS_type)
291 m_jetDefinition = new fastjet::JetDefinition(new fastjet::SISConePlugin(m_radius,
298 ));
299 else
300 m_jetDefinition = new fastjet::JetDefinition(m_jetAlgorithm,
301 m_radius,
303 m_strategy);
304#else
305 // no athena error on SIS or CMS
306 if ( (jetAlgType == CMS_type) || (jetAlgType == SIS_type)){
307 ATH_MSG_ERROR("CMS and SIScone plugin not supporeted outside athena yet");
308 return StatusCode::FAILURE;
309 }else
310 m_jetDefinition = new fastjet::JetDefinition(m_jetAlgorithm,
311 m_radius,
313 m_strategy);
314#endif
315
316
317 // without area calculation
318 if ( !m_doJetArea )
319 {
321 }
322 // with area calculation
323 else
324 {
325 ATH_MSG_INFO("Jet area type \042" << m_jetAreaDefinitionType << "\042");
326 if ( this->configJetAreas().isFailure() )
327 {
328 msg(MSG::ERROR) << "FastJet configuration error: "
329 << "Clustering with areas requested but area type"
330 << "\042" << m_jetAreaDefinitionType
331 << "\042 is not known" << endmsg;
332 return StatusCode::FAILURE;
333 }
335 }
336
337 // configure inclusive/exclusive jet extractor
338 if ( m_inclusive )
339 {
341 } // inclusive jet finder
342 else
343 {
344 // Priority:
345 //
346 // if !inclusive:
347 // m_exclusiveDcut > 0 -> yes
348 // m_exclusiveDcut <= 0 -> m_exclusiveNjets >= 0 -> yes
349 // m_exclusiveNjets < 0 -> error
350 if ( m_exclusiveDcut > 0. )
351 {
353 }
354 else
355 {
356 if ( m_exclusiveNjets >= 0 )
357 {
359 }
360 else
361 {
362 msg(MSG::ERROR) << "Invalid configuration for exclusive "
363 << "jet finder, one of ExclusiveDcut("
365 << ") or ExclusiveNjets("
367 << ") properties should be >= 0."
368 << endmsg;
369 return StatusCode::FAILURE;
370 } // invalid configuration of exclusive jet finder
371 } // exclusive jet finder using Njet cut
372 } // exclusive jet finder using Dcut
373
374 // print configuration
375 msg(MSG::INFO) << "JetAlgorithm ................ \042"
376 << m_jetAlgorithmType << "\042" << endmsg;
377 msg(MSG::INFO) << "Radius ...................... " << m_radius << endmsg;
378 if (jetAlgType == Kt_type)
379 {
380 msg(MSG::INFO) << "Recombination scheme ........ \042"
381 << m_recombinationSchemeType << "\042" << endmsg;
382 msg(MSG::INFO) << "Strategy .................... \042"
383 << m_clusterStrategyType << "\042" << endmsg;
384 }
385 else if (jetAlgType == CMS_type)
386 msg(MSG::INFO) << "CMS seed threshold .......... "
388 else if (jetAlgType == SIS_type)
389 {
390 msg(MSG::INFO) << "SIS overlap threshold ....... "
392 msg(MSG::INFO) << "SIS max num pass ............ "
393 << m_SIS_nPass << endmsg;
394 msg(MSG::INFO) << "SIS protojet Pt min ......... "
396 msg(MSG::INFO) << "SIS do caching .............. "
397 << (m_SIS_doCaching ? std::string("yes") : std::string("no")) << endmsg;
398 msg(MSG::INFO) << "SIS split/merge scale ....... \042"
399 << m_SIS_splitMergeScale_STRING << "\042" << endmsg;
400 msg(MSG::INFO) << "SIS split/merge stop scale .. "
402 }
403 if ( m_doJetArea )
404 {
405 msg(MSG::INFO) << "Calculate jet areas ......... yes" << endmsg;
406 msg(MSG::INFO) << "Area type ................... \042"
407 << m_jetAreaDefinitionType << "\042" << endmsg;
408 }
409
410
411
412 return StatusCode::SUCCESS;
413}
414
416// Tool Execution //
418
420 fjetlist_t& outJets)
421{
422 // clean up
423 ATH_MSG_DEBUG( " FastJetInterfaceTool::execute injet size = "<< inJets.size() );
424
425 if ( m_clusterSequence != nullptr )
426 {
427 delete m_clusterSequence;
428 m_clusterSequence = (fastjet::ClusterSequence*)nullptr;
429 }
430
431 if ( ((this->*m_processor)(inJets,outJets)).isFailure() )
432 {
435 {
436 msg(MSG::WARNING) << "Cannot allocate new fastjet::ClusterSequence,"
437 << " no jets found (message "
438 << m_failedExecCtr << " of "
439 << m_failedExecCtrMax << ")" << endmsg;
440 }
442 {
443 msg(MSG::WARNING) << "Cannot allocate new fastjet::ClusterSequence,"
444 << " no jets found (message "
445 << m_failedExecCtr << " of "
446 << m_failedExecCtrMax << ") [last message]"
447 << endmsg;
448 }
449 outJets.clear();
450 }
451 return StatusCode::SUCCESS;
452}
453
455// Configuration Helpers //
457
458bool FastJetInterfaceTool::checkConfig(const std::string& key,
459 fastjet::JetAlgorithm& fjalg)
460{
461 const algomap_t& map = this->getKnownAlgorithms();
462 return chkConfig(key,fjalg,map);
463}
464
465bool FastJetInterfaceTool::checkConfig(const std::string& key,
466 fastjet::Strategy& fjstr)
467{
468 const strategymap_t& map = this->getKnownStrategies();
469 return chkConfig(key,fjstr,map);
470}
471
472bool FastJetInterfaceTool::checkConfig(const std::string& key,
473 fastjet::RecombinationScheme& fjrs)
474{
476 return chkConfig(key,fjrs,map);
477}
478
479#ifndef XAOD_STANDALONE
480bool FastJetInterfaceTool::checkConfig(const std::string& key,
481 fastjet::SISConePlugin::SplitMergeScale& fjsms)
482{
484 return chkConfig(key,fjsms,map);
485}
486#endif
487
488bool FastJetInterfaceTool::checkConfig(const std::string& key,
489 fastjet::AreaType& fjart)
490{
491 const areamap_t& map = this->getKnownAreas();
492 return chkConfig(key,fjart,map);
493}
494
495const std::string& FastJetInterfaceTool::configName(fastjet::JetAlgorithm fjalg)
496{
497 const algomap_t& map = this->getKnownAlgorithms();
498 return cfgName(fjalg,map,m_invalidKeyReference);
499}
500
501const std::string& FastJetInterfaceTool::configName(fastjet::Strategy fjstr)
502{
503 const strategymap_t& map = this->getKnownStrategies();
504 return cfgName(fjstr,map,m_invalidKeyReference);
505}
506
507const std::string&
508FastJetInterfaceTool::configName(fastjet::RecombinationScheme fjrs)
509{
511 return cfgName(fjrs,map,m_invalidKeyReference);
512}
513
514#ifndef XAOD_STANDALONE
515const std::string&
516FastJetInterfaceTool::configName(fastjet::SISConePlugin::SplitMergeScale fjsms)
517{
519 return cfgName(fjsms,map,m_invalidKeyReference);
520}
521#endif
522const std::string& FastJetInterfaceTool::configName(fastjet::AreaType fjart)
523{
524 const areamap_t& map = this->getKnownAreas();
525 return cfgName(fjart,map,m_invalidKeyReference);
526}
527
529// Processor Helpers //
531
533 fjetlist_t& outJets)
534{
535 ATH_MSG_DEBUG( " processing without area " );
536 m_clusterSequence = new fastjet::ClusterSequence(inJets,*m_jetDefinition);
537 ATH_MSG_DEBUG( " processed without area " );
538 return m_clusterSequence != nullptr
539 ? (this->*m_extractor)(outJets) : StatusCode::FAILURE;
540}
541
543 fjetlist_t& outJets)
544{
545
546 updateRandomSeeds(); // make sure rnd seeds depend on event & run numbers
547 m_clusterSequence = (fastjet::ClusterSequence*)
548 new fastjet::ClusterSequenceArea(inJets,*m_jetDefinition,*m_areaDefinition);
549
550 return m_clusterSequence != nullptr
551 ? (this->*m_extractor)(outJets) : StatusCode::FAILURE;
552}
553
555{
556 outJets = m_clusterSequence->inclusive_jets(m_pTmin);
557 ATH_MSG_DEBUG( " extract inclusive outjets N= "<< outJets.size() );
558 return !outJets.empty() ? StatusCode::SUCCESS : StatusCode::FAILURE;
559}
560
562{
563 outJets = m_clusterSequence->exclusive_jets(m_exclusiveNjets);
564 ATH_MSG_DEBUG( " extract exclusiveNjets outjets N= "<< outJets.size() );
565
566 return !outJets.empty() ? StatusCode::SUCCESS : StatusCode::FAILURE;
567}
568
570{
571 outJets = m_clusterSequence->exclusive_jets(m_exclusiveDcut);
572 ATH_MSG_DEBUG( " extract exclusiveDcut outjets N= "<< outJets.size() );
573 return ! outJets.empty() ? StatusCode::SUCCESS : StatusCode::FAILURE;
574}
575
576fastjet::ClusterSequence* FastJetInterfaceTool::clusterSequence()
577{ return m_clusterSequence; }
578
579const fastjet::ClusterSequence* FastJetInterfaceTool::clusterSequence() const
580{ return m_clusterSequence; }
581
582const fastjet::JetDefinition* FastJetInterfaceTool::getJetDefinition() const
583{ return m_jetDefinition; }
584
585const fastjet::AreaDefinition* FastJetInterfaceTool::getAreaDefinition() const
586{ return m_areaDefinition; }
587
590
592{
593 // check area type
594 const areamap_t& map = getKnownAreas();
595 const auto pPair = map.find("default");
596 if (pPair == map.end()){
597 return StatusCode::FAILURE;
598 }
599 m_areaType = pPair->second;
601 { return StatusCode::FAILURE; }
602 // area definition according to type
603 switch ( m_areaType )
604 {
605 // Voronoi
606 case fastjet::voronoi_area:
608 new
609 fastjet::AreaDefinition(fastjet::VoronoiAreaSpec(m_voronoiEffectiveRfact));
610 break;
611 // Ghosted
612 case fastjet::active_area:
613 case fastjet::active_area_explicit_ghosts:
614 case fastjet::one_ghost_passive_area:
615 case fastjet::passive_area:
616 {
617 fastjet::GhostedAreaSpec Garea_spec(m_ghostedMinRap,
624
625 // create a seed from the jet alg and the seed
626 m_baseRNDSeed = CxxUtils::crc64 ("FastJet");
630 // seed will be modified and reset in the Garea_spec for each event (see updateRandomSeeds() ).
631
632 ATH_MSG_DEBUG(" Base seed = "<< m_baseRNDSeed<< " user seed ="<< m_userRNDSeed );
633
634 m_areaDefinition = new fastjet::AreaDefinition(Garea_spec,
635 m_areaType);
636 break;
637 }
638 // others
639 default:
640 m_areaDefinition = new fastjet::AreaDefinition(m_areaType);
641 break;
642 } // switch through area options
643
644 // configure processor
645 return StatusCode::SUCCESS;
646}
647
649 // update seeds. Call this function ONLY if using a ClusterSequenceArea
652{
653
654
655 std::vector<int> seed;
656
657 fastjet::GhostedAreaSpec & Garea_spec = m_areaDefinition->ghost_spec() ;
658 Garea_spec.get_random_status (seed);
659
660 unsigned int evnum = 0;
661 unsigned int runnum = 0;
662
663 const xAOD::EventInfo* ei = nullptr;
664 if (evtStore()->retrieve (ei,"EventInfo").isSuccess()){
665 evnum = ei->eventNumber();
666 runnum = ei->runNumber();
667 }
668
669 // Use both event and run nunmber to reset the random seeds
670 uint64_t crc = CxxUtils::crc64addint (m_baseRNDSeed, evnum);
671 crc = CxxUtils::crc64addint (crc, runnum);
672
673 // Tacitly assuming that there are no consistency requirements
674 // on the RNG state (true for the current RNG that fastjet uses).
675 // Use fixed data sizes for crossplatform reproducibility.
676 for (size_t i = 0; i < seed.size(); i++) {
677 seed[i] = static_cast<int> (static_cast<uint32_t> (crc));
678 crc = (crc >> 32) ^ crc;
679 }
680
681
682 Garea_spec.set_random_status (seed);
683 seed.clear();
684 Garea_spec.get_random_status (seed);
685 ATH_MSG_DEBUG("area def "<< m_areaDefinition<< " ghost spec= "<< &Garea_spec << " crc= "<< crc<< " seed0="<< seed[0] << " seed1="<<seed[1]);
686
687}
#define endmsg
#define ATH_MSG_ERROR(x)
#define ATH_MSG_INFO(x)
#define ATH_MSG_DEBUG(x)
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
ServiceHandle< StoreGateSvc > & evtStore()
double m_exclusiveDcut
Exclusive jet finder property: d cut.
std::string m_clusterSequenceType
fastjet property: cluster sequence type
const FastJetInterface::algomap_t & getKnownAlgorithms()
Get known jet algorithms.
std::string m_clusterStrategyType
fastjet property: cluster strategy
fastjet::RecombinationScheme m_recombinationScheme
fastjet tag: recombination scheme
unsigned int m_failedExecCtr
Execution failure counter.
EXTRACTOR m_extractor
Pointer to extractor.
FastJetInterfaceTool(const std::string &n)
Standard AlgTool constructor.
const std::string getAreaDefinitionType() const
Access fastjet area definition type.
static const unsigned int m_failedExecCtrMax
Execution failure counter reporting cut-off.
double m_ghostedMeanKt
fastjet property: average kT of ghosts
uint64_t m_baseRNDSeed
Base seed for random generator. Constructed from m_jetAlgorithm and m_radius.
int m_exclusiveNjets
Exclusive jet finder property: number of jets requested.
std::string m_jetAreaDefinitionType
fastjet property: jet area definition
double m_SIS_protojetPtMin
fastjet property for SIS Cone plugin: protojet min pt
const fastjet::AreaDefinition * getAreaDefinition() const
Access fastjet AreaDefinition.
virtual StatusCode execute(const fjetlist_t &inJets, fjetlist_t &outJets)
Execute method.
fastjet::AreaDefinition * m_areaDefinition
Pointer to area definition.
double m_ghostedKtScatter
fastjet property: scatter of kT of ghosts
StatusCode configJetAreas()
Configures jet area calculation strategy.
bool m_SIS_doCaching
fastjet property for SIS Cone plugin: do caching
const FastJetInterface::areamap_t & getKnownAreas()
Get known area types.
StatusCode f_extractExclNjets(FastJetInterface::fjetlist_t &outJets)
Exclusive extractor implementation.
static const std::string m_invalidKeyReference
Reference for invalid fastjet tag.
int m_SIS_nPass
fastjet property for SIS Cone plugin: max number of passes
const FastJetInterface::strategymap_t & getKnownStrategies()
Get known jet finding strategies.
const FastJetInterface::splitMergeScaleMap_t & getKnownSplitMergeScales()
Get known split merge scales.
fastjet::Strategy m_strategy
fastjet tag: jet clustering strategy
virtual ~FastJetInterfaceTool()
Base class destructor.
bool checkConfig(const std::string &key, fastjet::JetAlgorithm &fjalg)
Check configuration keyword for jet algorithm.
virtual void updateRandomSeeds()
Set the area rnd seed according to run/event numbers.
const FastJetInterface::schememap_t & getKnownRecombinationSchemes()
Get known recombination schemes.
fastjet::AreaType m_areaType
fastjet tag: jet area type
PROCESSOR m_processor
Pointer to processor.
double m_CMS_seedThreshold
fastjet property for CMS Cone plugin: seed threshold
fastjet::JetDefinition * m_jetDefinition
Pointer to jet definition.
std::string m_jetAlgorithmType
fastjet property: jet algorithm
bool m_doJetArea
Tool property: flag controls if jet area is calculated.
const fastjet::JetDefinition * getJetDefinition() const
Access fastjet JetDefinition.
bool m_inclusive
Jet algorithm control property: inclusive/exclusive jet finding.
StatusCode f_processWithArea(const FastJetInterface::fjetlist_t &inJets, FastJetInterface::fjetlist_t &outJets)
Processor implementation: cluster sequence with area calculation.
StatusCode f_extractInclusive(FastJetInterface::fjetlist_t &outJets)
Inclusive extractor implementation.
double m_ghostedMinRap
fastjet property: ghost area rapidity limit (min)
double m_ghostedArea
fastjet property: size of area coverded by each ghost
virtual fastjet::ClusterSequence * clusterSequence()
Access fastjet ClusterSequence.
fastjet::ClusterSequence * m_clusterSequence
Pointer to actual cluster sequence.
StatusCode f_processWithoutArea(const FastJetInterface::fjetlist_t &inJets, FastJetInterface::fjetlist_t &outJets)
Processor implementation: cluster sequence without area calculation.
const std::string & configName(fastjet::JetAlgorithm fjalg)
Get keyword for fastjet configuration.
StatusCode f_extractExclDcut(FastJetInterface::fjetlist_t &outJets)
Exclusive extractor implementation.
double m_SIS_splitMergeStopScale
fastjet property for SIS Cone plugin: split merge stop scale
int m_ghostedRepeat
fastjet property: ghost area calculation repeatitions
std::string m_SIS_splitMergeScale_STRING
fastjet property for SIS Cone plugin: split merge scale
virtual StatusCode initialize()
Initialize tool.
fastjet::JetAlgorithm m_jetAlgorithm
fastjet tag: jet algorithm
double m_pTmin
Inclusive jet finder property: pTmin cut.
fastjet::SISConePlugin::SplitMergeScale m_SIS_splitMergeScale
fastjet tag: SIS split merge scale
std::string m_recombinationSchemeType
fastjet property: recombination scheme
double m_ghostedGridScatter
fastjet property: scatter of ghosts on grid
double m_radius
Jet algorithm property: radius/distance parameter.
uint64_t m_userRNDSeed
Seed modifier for random generator : a user property (default to 0, i.e m_baseRNDSeed is unmodified)
double m_ghostedMaxRap
fastjet property: ghost area rapidity limit (max)
double m_SIS_overlapThreshold
fastjet property for SIS Cone plugin: overlap threshold
double m_voronoiEffectiveRfact
fastjet property: Voronoi area effective radius
std::vector< fjet_t > fjetlist_t
AsgTool(const std::string &name)
Constructor specifying the tool instance's name.
Definition AsgTool.cxx:58
STL class.
uint32_t runNumber() const
The current event's run number.
uint64_t eventNumber() const
The current event's event number.
A crc-64 implementation, using pclmul where possible.
uint64_t crc64(const CRCTable &table, const char *data, size_t data_len)
Find the CRC-64 of a string,.
Definition crc64.cxx:696
uint64_t crc64addint(uint64_t crc, uint64_t x)
Extend a previously-calculated CRC to include an int.
Definition crc64.cxx:732
Collection of types for the internal dictionary.
const std::string & cfgName(D tag, const M &map, const std::string &invalidKey)
General configuration keyword finder.
std::map< std::string, fastjet::AreaType > areamap_t
Mapping keyword on fastjet area type tag.
std::map< std::string, fastjet::Strategy > strategymap_t
Mapping keyword on fastjet clustering strategy tag.
std::map< std::string, fastjet::SISConePlugin::SplitMergeScale > splitMergeScaleMap_t
Mapping keyword on fastjet SIS Cone split merge scale tag.
std::map< std::string, fastjet::RecombinationScheme > schememap_t
Mapping keyword on fastjet recombination scheme tag.
static bool chkConfig(const std::string &key, D &tag, const M &map)
General configuration check.
std::map< std::string, fastjet::JetAlgorithm > algomap_t
Mapping keyword on fastjet jet algorithm tag.
EventInfo_v1 EventInfo
Definition of the latest event info version.
MsgStream & msg
Definition testRead.cxx:32