ATLAS Offline Software
IParticleCollHandle_Jet.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 
7 // //
8 // Implementation of class IParticleCollHandle_Jet //
9 // //
10 // Author: Riccardo-Maria BIANCHI (rbianchi@cern.ch) //
11 // Initial version: May 2014 //
12 // //
14 
15 //Local
17 #include "IParticleHandle_Jet.h"
19 #include "AODSysCommonData.h"
20 
21 //VP1
22 #include "VP1Base/IVP1System.h"
23 #include "VP1Base/VP1Msg.h"
24 #include "VP1Base/VP1Serialise.h"
25 #include "VP1Base/VP1Deserialise.h"
26 #ifndef BUILDVP1LIGHT
29 #endif // BUILDVP1LIGHT
30 
31 //Qt
32 #include <QStringList>
33 
34 //xAOD
35 #include "xAODJet/JetContainer.h"
36 
37 
38 // Coin3D
39 #include <Inventor/C/errors/debugerror.h>
40 #include <Inventor/nodes/SoSeparator.h>
41 #include <Inventor/nodes/SoSwitch.h>
42 #include <Inventor/nodes/SoMaterial.h>
43 //#include "Inventor/nodes/SoDrawStyle.h"
44 //#include "Inventor/nodes/SoLightModel.h"
45 #include <Inventor/nodes/SoTexture2.h>
46 
48 
49 #ifdef BUILDVP1LIGHT
50  #include <QSettings>
51  #include "xAODRootAccess/Init.h"
52  #include "xAODRootAccess/TEvent.h"
53 #endif // BUILDVP1LIGHT
54 
55 // System of units
56 #ifdef BUILDVP1LIGHT
57  #include "GeoModelKernel/Units.h"
58  #define SYSTEM_OF_UNITS GeoModelKernelUnits // --> 'GeoModelKernelUnits::cm'
59 #else
60  #include "GaudiKernel/SystemOfUnits.h"
61  #define SYSTEM_OF_UNITS Gaudi::Units // --> 'Gaudi::Units::cm'
62 #endif
63 
64 //____________________________________________________________________
65 #if defined BUILDVP1LIGHT
67  {
68  return sys->getObjectList(xAOD::Type::Jet);
69  }
70 #else
72  {
74  }
75 #endif // BUILDVP1LIGHT
76 
77 //____________________________________________________________________
79 public:
80 
81  Imp () : theclass(nullptr), updateGUICounter(0), collSettingsButton(nullptr), scale(1.0),
82  randomColours(false), m_jetMaterialDefault(nullptr), bTaggingTagger("MV1"),
83  bTaggingCut(0.98), bTaggingSwitch(nullptr),
84  bTaggingTexture(nullptr), bTaggingMaterial(nullptr) {}
85 
86  QString name;
87 
91  #ifdef BUILDVP1LIGHT
92  QStringList jetList;
93  #endif // BUILDVP1LIGHT
94 
95  // settings
96  double scale = 1.0; // dummy value. The actual default value is set in the IParticleHandle_Jet::Imp class definition.
97  bool randomColours = false;
98  bool isMaxR = false; // default
99  double maxR = 1.0; // dummy value. The actual default value is set in the IParticleHandle_Jet::Imp class definition.
100 
101  // jet materials
102  SoMaterial* m_jetMaterialDefault;
103 
104  // b-tagging
105  std::string bTaggingTagger;
106  double bTaggingCut;
107  SoSwitch *bTaggingSwitch;
108  SoTexture2* bTaggingTexture;
109  SoMaterial* bTaggingMaterial;
110 
111 
112  // SoMaterial* defaultParametersMaterial; /// This will be given to the VP1MaterialButton in
113 
114 
115 
116  void possiblyUpdateGUI() {//Fixme: to IParticleCollHandleBase
117  if (!((updateGUICounter++)%50)) {
119  }
120  }
121 };
122 
123 //____________________________________________________________________
125 const QString& name, xAOD::Type::ObjectType type)
127 {
128  m_d->theclass = this;
129  m_d->updateGUICounter = 0;
131 
132  m_d->name = name;
133 
134  //==========
135  // b-tagging
136  m_d->bTaggingSwitch=new SoSwitch;
137  m_d->bTaggingSwitch->whichChild=SO_SWITCH_ALL;
138  // new b-tagged jets and material
139  m_d->bTaggingTexture = new SoTexture2;
140  m_d->bTaggingMaterial = new SoMaterial;
141 
142 
143  //The object names should not contain all sorts of funky chars (mat button style sheets wont work for instance):
144  QString safetext(text());
145  safetext.replace(' ','_');
146  safetext.replace('[','_');
147  safetext.replace(']','_');
148  safetext.replace('/','_');
149  safetext.replace('.','_');
150  safetext.replace(',','_');
151  safetext.replace('<','_');
152  safetext.replace('>','_');
153  safetext.replace('&','_');
154 
155  // m_d->defaultParametersMaterial = new SoMaterial;
156  // m_d->defaultParametersMaterial->setName(("IParticleCollHandle_Jet"+safetext).toStdString().c_str());
157  // m_d->defaultParametersMaterial->ref();
158  // m_d->matButton->setDefaultParameterMaterial(m_d->defaultParametersMaterial); FIXME
159 }
160 
161 //____________________________________________________________________
163 {
164  // m_d->defaultParametersMaterial->unref();
165 
166  if (m_d->bTaggingSwitch) m_d->bTaggingSwitch->unref();
167 
168  delete m_d;
169 }
170 
171 //____________________________________________________________________
173 {
174  messageDebug("IParticleCollHandle_Jet::init()");
175 
176  m_d->collSettingsButton = new JetCollectionSettingsButton(0, 25, m_d->name); // 0 and 25 are default values
178 
179  // 1st - CALLING THE "init" OF THE BASE CLASS
180  // NOTE!!
181  // It must be called before other material/button settings,
182  // otherwise they get overridden
183  // std::cout<<"Calling VP1StdCollection::init with m_d->matButton (JetCollectionSettingsButton)="<<m_d->matButton<<std::endl;
184  VP1StdCollection::init(m_d->collSettingsButton); //--->this call is required!! Passing in m_d->collSettingsButton means we have the more complex button that allows cuts
185  setupSettingsFromController(common()->controller());
186  connect(this,SIGNAL(visibilityChanged(bool)),this,SLOT(collVisibilityChanged(bool)));
187 
188 
189  // create semi-transparent material for all jets, with the default color
190  m_d->m_jetMaterialDefault = VP1MaterialButton::createMaterial(defaultColor(), 0.2, 0.3); // RGBcolor, brightness, transparency
191  m_d->m_jetMaterialDefault->ref();
192  // init material for all jets
195 
196 
197  // std::cout<<"IParticleCollHandle_Jet::init 2"<<std::endl;
198  // std::cout<<"swi: "<<collSwitch()<<std::endl;
199  // std::cout<<"sep: "<<collSep()<<std::endl;
200  // std::cout<<"mat: "<<material()<<std::endl;
201 
202  // collSwitch()->addChild(m_d->collSettingsButton->trackLightModel()); // TODO: update for jets
203  // collSwitch()->addChild(m_d->collSettingsButton->trackDrawStyle()); // TODO: update for jets
204 
205  //==========
206  // b-tagging
209  // m_d->bTaggingSwitch->addChild(m_d->bTaggingTexture);
210  }
213  // m_d->bTaggingMaterial = controller->bTaggingMaterial();
214  // m_d->bTaggingSwitch->addChild(m_d->bTaggingMaterial);
215  }
216  else {
217  messageVerbose("Info - No b-tag rendering selected.");
218  }
219 
220  // we want these nodes to stay around even when removed from nodes, thus we increment the ref count by one
221  m_d->bTaggingSwitch->ref();
222  // m_d->bTaggingTexture->ref();
223  // m_d->bTaggingMaterial->ref();
224 
225 }
226 
227 
228 //____________________________________________________________________
230 {
231  messageDebug("IParticleCollHandle_Jet::setupSettingsFromControllerSpecific()");
232 
234 
235  //cuts
236  connect(controller,SIGNAL(cutAllowedPtChanged(const VP1Interval&)),this,SLOT(setCutAllowedPt(const VP1Interval&)));
237  setCutAllowedPt(controller->cutAllowedPt());
238 
239  connect(controller,SIGNAL(cutAllowedEtaChanged(const VP1Interval&)),this,SLOT(setCutAllowedEta(const VP1Interval&)));
240  setCutAllowedEta(controller->cutAllowedEta());
241 
242  connect(controller,SIGNAL(cutAllowedPhiChanged(const QList<VP1Interval>&)),this,SLOT(setCutAllowedPhi(const QList<VP1Interval>&)));
243  setCutAllowedPhi(controller->cutAllowedPhi());
244 
245  // // Parameters
246  // connect(controller,SIGNAL(showParametersChanged(bool)), this,SLOT(showParametersChanged(bool)));
247  // connect(controller,SIGNAL(colourParametersByTypeChanged(bool)),this,SLOT(showParametersChanged(bool)));
248  // Just reusing the same slot, since it doesn't
249 
250  // scale
251  connect(controller,SIGNAL(scaleChanged(const double&)),this,SLOT(setScale(const double&)));
252  setScale( this->scale() );
253 
254  // random jet colors
255  connect(controller,SIGNAL(rerandomise()),this,SLOT(rerandomise()));
256  connect(controller,SIGNAL(randomJetColoursChanged(const bool&)),this,SLOT(setRandomJetColours(const bool&)));
257  setRandomJetColours(controller->randomJetColours());
258 
259  // maxR
260  connect(controller, SIGNAL(maxRChanged(const double&)), this, SLOT(setMaxR(const double&)));
261 
262  // b-tagging
263  connect(controller, SIGNAL(bTaggingEnabledChanged(const bool&)), this, SLOT(setBTaggingEnabled(const bool&)));
264  setBTaggingEnabled(controller->bTaggingEnabled());
265  connect(controller, SIGNAL(bTaggingTaggerChanged(const QString &)), this, SLOT(setBTaggingTagger(const QString &)));
266  setBTaggingTagger(controller->bTaggingTagger());
267  connect(controller, SIGNAL(bTaggingCutChanged(const double &)), this, SLOT(setBTaggingCut(const double &)));
268  setBTaggingCut(controller->bTaggingCut());
269  connect(controller,SIGNAL(bTaggingRenderingMaterialChanged(const bool&)), this, SLOT(setBTaggingMaterialChanged(const bool&)));
270 
271  connect(controller,SIGNAL(bTaggingRenderingSkinChanged(const bool&)), this, SLOT(setBTaggingSkinChanged(const bool&)));
272 }
273 
274 //SoMaterial* IParticleCollHandle_Jet::defaultParameterMaterial() const {
275 // return m_d->defaultParametersMaterial;
276 //}
277 
278 
280  if (!m_d->collSettingsButton){
281  messageVerbose("Jet - No collSettingsButton set! Can't call init(), so crash is imminent...");
282  }
283  return *m_d->collSettingsButton;
284 }
285 
286 
287 
288 //____________________________________________________________________
289 void IParticleCollHandle_Jet::setScale(const double& sca)
290 {
291 
292  messageVerbose("IParticleCollHandle_Jet::setScale() - scale: " + QString::number(sca));
293 
294  if (getHandlesList().isEmpty()) {
295  messageVerbose("no jet handles defined! returning.");
296  return;
297  }
298  if (m_d->scale == sca)
299  return;
300 
301  bool isEt = sca>0;
302  double tmpScale = std::max(1*SYSTEM_OF_UNITS::mm/(100*SYSTEM_OF_UNITS::GeV),
304  // m_d->collSettingsButton->lengthOf100GeV() * Gaudi::Units::m/(100.0*Gaudi::Units::GeV)));
305  std::fabs(sca) * SYSTEM_OF_UNITS::m/(100.0*SYSTEM_OF_UNITS::GeV)));
306 
307  m_d->scale = isEt ? tmpScale : -tmpScale;
308 
309  if (!isLoaded())
310  return;
311 
312  messageVerbose("Scale change: to "+str(m_d->scale/(SYSTEM_OF_UNITS::m/(100.0 * SYSTEM_OF_UNITS::GeV)))+" m/100GeV. Updating "+str(getHandlesList().count())+" jets");
313  // std::cout << "Scale change: d->scale/(SYSTEM_OF_UNITS::m/(100.0*SYSTEM_OF_UNITS::GeV)))" << "m/100GeV. Updating " << getHandlesList().count() << " jets" << std::endl;
314 
317  AODHandleBase* handle=0;
318  while ((handle=getNextHandle()))
319  {
320  IParticleHandle_Jet* jet = dynamic_cast<IParticleHandle_Jet*>(handle);
321  if (jet && jet->has3DObjects()) {
322  jet->setScale(tmpScale, isEt);
323  jet->updateHeight();
324  } else {
325  message("ERROR Handle of wrong type!");
326  }
327  }
328  largeChangesEnd();
329 }
330 
331 //____________________________________________________________________
333 {
334  return m_d->scale;
335 }
336 
337 //____________________________________________________________________
339 {
340  return m_d->maxR;
341 }
342 
343 
344 //____________________________________________________________________
345 void IParticleCollHandle_Jet::setMaxR(const double& maxR)
346 {
347  messageVerbose("IParticleCollHandle_Jet::setMaxR() - maxR: " + QString::number(maxR));
348  // messageVerbose("setMaxR to: " + str(maxR)+str(", from: ")+str(m_d->maxR));
349 
350  if (m_d->maxR == maxR){ // no changes
351  messageDebug("no changes, returning...");
352  return;
353  }
354 
355  m_d->maxR = maxR;
356 
357  if (!isLoaded()) {
358  messageDebug("is not loaded, returning...");
359  return;
360  }
361 
362  messageDebug("modifying MaxR for all jets...");
365  AODHandleBase* handle=0;
366  while ((handle=getNextHandle()))
367  {
368  IParticleHandle_Jet* jet = dynamic_cast<IParticleHandle_Jet*>(handle);
369  if (jet && jet->has3DObjects()) {
370  jet->setMaxR(m_d->maxR);
371  jet->updateHeight();
372  } else {
373  message("ERROR Handle of wrong type!");
374  }
375  }
376  largeChangesEnd();
377 }
378 
379 
380 //____________________________________________________________________
382 {
383  VP1Msg::messageVerbose("IParticleCollHandle_Jet::isRandomColors()");
384  return m_d->randomColours;
385 }
386 
388 //bool IParticleCollHandle_Jet::isMaxR() const
389 //{
390 // VP1Msg::messageVerbose("IParticleCollHandle_Jet::isMaxR()");
391 // return m_d->isMaxR;
392 //}
393 
394 
395 //____________________________________________________________________
397 {
398  messageVerbose("IParticleCollHandle_Jet::setRandomJetColours() - b: "+QString::number(b));
399 
400  if (m_d->randomColours == b)
401  return;
402 
403  m_d->randomColours = b;
404 
405  if (!isLoaded())
406  return;
407 
409  int ijet = 0;
411  AODHandleBase* handle=0;
412  while ((handle=getNextHandle()))
413  {
414  ++ijet;
415  IParticleHandle_Jet* jet = dynamic_cast<IParticleHandle_Jet*>(handle);
416  if (jet && jet->has3DObjects()) {
417  messageVerbose("considering jet: "+QString::number(ijet));
418  int randomColors = isRandomColors();
419  messageVerbose("setting random material on jet: "+QString::number(ijet)+" - random colors? "+QString::number(randomColors));
420  // std::cout << "isRandomColors() --> " << isRandomColors() << std::endl;
421  jet->updateMaterial( randomColors );
422 
423  } else {
424  message("ERROR Handle of wrong type!");
425  }
426  }
427  largeChangesEnd();
428 }
429 
430 //____________________________________________________________________
432 {
433  messageVerbose("IParticleCollHandle_Jet::rerandomise()");
434 
435  if (!isLoaded()) {
436  messageVerbose("IParticleCollHandle_Jet::rerandomise() - Returning.");
437  return;
438  }
439  if (!isRandomColors()) {
440  VP1Msg::message("'Random jet colours' is not checked. Nothing to do. Returning.");
441  return;
442  }
443 
446  AODHandleBase* handle=0;
447  while ((handle=getNextHandle()))
448  {
449  IParticleHandle_Jet* jet = dynamic_cast<IParticleHandle_Jet*>(handle);
450  if (jet && jet->has3DObjects()) {
451  jet->rerandomiseMaterial();
452  } else {
453  message("ERROR Handle of wrong type!");
454  }
455  }
456  largeChangesEnd();
457 }
458 
459 //____________________________________________________________________
461 {
462  messageVerbose("loading Jet collection");
463 
464  //Get collection:
465  const xAOD::JetContainer * coll(nullptr);
466 
467  #if defined BUILDVP1LIGHT
468  // // Get the name of the application:
469  // const char* appName = "VP1Light";
470 
471  // // Initialize the environment:
472  // if( !xAOD::Init( appName ).isSuccess() ) {
473  // message("Failed to execute xAOD::Init");
474  // return false;
475  // }
476 
477  // Retrieve objects from the event
478  if( !(systemBase()->getEvent())->retrieve( coll, name().toStdString()).isSuccess() ) {
479  QString errMsg = "Failed to retrieve " + name();
480  message("Error: Could not retrieve collection with key="+name());
481  return false;
482  }
483  #else
484  if (!VP1SGAccessHelper(systemBase()).retrieve(coll, name())) {
485  message("Error: Could not retrieve Jet collection with key="+name());
486  return false;
487  } else {
488  messageDebug("Jet collection '"+name()+"' loaded");
489  }
490  #endif // BUILDVP1LIGHT
491 
492 
493  // // Retrieve the xAOD particles:
494  // const xAOD::JetContainer* xaod = evtStore()->retrieve<const xAOD::JetContainer>( m_JetCollection );
495 
496  // Check that the auxiliary store association was made successfully:
497  if( ! coll->hasStore() ) {
498  message("No auxiliary store got associated to the Jet container with key: " +name());
499  }
500 
501  // This is needed for now, until the issues around the DV code are
502  // sorted out...
503  const_cast< xAOD::JetContainer* >( coll )->setStore(
504  ( SG::IAuxStore* ) coll->getConstStore() );
505 
506  //Make appropriate Jet handles:
507  // hintNumberOfTracksInEvent(coll->size());
508  xAOD::JetContainer::const_iterator it, itEnd = coll->end();
509  for ( it = coll->begin() ; it != itEnd; ++it) {
511  if (!*it) {
512  messageDebug("WARNING: Ignoring null Jet pointer.");
513  continue;
514  }
515  /*
516  if ((*it)->charge()==0.0) {
517  messageDebug("WARNING: Ignoring which claims to be neutral (charge()==0.0).");
518  continue;
519  }
520  */
521  addHandle(new IParticleHandle_Jet(this,*it));
522  }
523 
524  // get handles list and update locally
525  // m_d->jets = this->getHandlesList();
526 
527  return true;
528 }
529 
530 //Cuts:
531 //____________________________________________________________________
533  messageVerbose("IParticleCollHandle_Jet::cut()");
534 
535  if (IParticleHandle_Jet* handle = dynamic_cast<IParticleHandle_Jet*>(c))
536  {
537 
538  //------ ENERGY CUTS
539  messageVerbose("jet's energy, allowedPt^2, PtAll: - " + QString::number(handle->energyForCuts()) + " - " + getCutAllowedPt().toString() + " - " + QString::number(int(getPtAllowall())) );
540  double jEnergy = handle->energyForCuts();
541  double jEnergySqr = jEnergy * jEnergy; // in IParticleCollHandleBase the allowedPt is stored as squared, to avoid square-root operations
542  if (!getPtAllowall() && !getCutAllowedPt().contains(jEnergySqr) ) {
543  messageVerbose("Pt cut not passed");
544  return false;
545  } else {
546  messageVerbose("Pt cut passed!!");
547  }
548 
549  //------ ETA CUTS
550  messageVerbose("jet's eta, etaCut, EtaAll: " + QString::number(handle->eta()) + " - " + getCutAllowedEta().toString() + " - " + QString::number(int(getEtaAllowall())) );
551  if (!getEtaAllowall() && !getCutAllowedEta().contains(handle->eta())) {
552  messageVerbose("Eta cut not passed");
553  return false;
554  }
555 
556  //------ PHI CUTS
557  if (!getPhiAllowall() ) {
558  double phi = handle->phi();
559  bool ok(false);
560  for (const VP1Interval& phirange : getCutAllowedPhi() ) {
561  messageVerbose("jet's phi, phiCut, PhiAll: " + QString::number(phi) + " - " + phirange.toString() + " - " + QString::number(int(getPhiAllowall())) );
562  if (phirange.contains(phi)||phirange.contains(phi+2*M_PI)||phirange.contains(phi-2*M_PI)) {
563  ok = true;
564  break;
565  }
566  }
567  if (!ok) {
568  messageVerbose("Phi cut not passed");
569  return false;
570  }
571  }
572 
573  //------ OTHER CUTS
574  messageVerbose("Other cuts??? Calling base method...");
575  if (!IParticleCollHandleBase::cut(handle))
576  return false;
577 
578  } // if(dynamic_cast)
579  else{
580  messageVerbose("Not a IParticleCollHandle_Jet. Calling base method...");
581  if (!IParticleCollHandleBase::cut(handle))
582  return false;
583  }
584 
585  return true; //default
586 
587 }
588 
589 
590 
591 //____________________________________________________________________
593  messageVerbose("IParticleCollHandle_Jet::showParametersChanged to "+str(val));
595 }
596 
597 
598 //____________________________________________________________________
600  messageVerbose("IParticleCollHandle_Jet::setBTaggingEnabled - "+str(flag));
601  m_d->bTaggingSwitch->whichChild = (flag ? SO_SWITCH_ALL : SO_SWITCH_NONE);
602  if (flag) {
603  setBTaggingMaterialChanged(true); // we set default "Material"
604  }
605 }
606 
607 
608 //____________________________________________________________________
610 
612 
613  //remove the previous skin and material
614  m_d->bTaggingSwitch->removeChild(m_d->bTaggingTexture);
615  m_d->bTaggingSwitch->removeChild(m_d->bTaggingMaterial);
616  // delete m_d->bTaggingTexture;
617  // delete m_d->bTaggingMaterial;
618  m_d->bTaggingTexture = 0;
619  m_d->bTaggingMaterial = 0;
620 
621  // setting the texture
622  m_d->bTaggingTexture = new SoTexture2;
623  m_d->bTaggingMaterial = new SoMaterial;
624 
625  // original from Joe, for skins/textures
626  std::string fName = PathResolver::find_file (filename.toStdString()+".png", "DATAPATH");
627  messageVerbose("texture found: " + QString::fromStdString(fName) );
628  m_d->bTaggingTexture->filename.setValue(fName.c_str());
629 
630  // adding the texture to the SoSwitch
631  m_d->bTaggingSwitch->addChild(m_d->bTaggingTexture);
632  }
633 
634  updateBTaggingSwitchAllJets(); // update switch all jets
635  updateBTaggingAllJets(); // update cut for all jets
636 }
637 
638 //____________________________________________________________________
640 {
641  messageVerbose("IParticleCollHandle_Jet::setBTaggingMaterial()");
642 
644 
645  messageVerbose("Updating the material node");
646 
647  //remove the previous skin and material
648  m_d->bTaggingSwitch->removeChild(m_d->bTaggingTexture);
649  m_d->bTaggingSwitch->removeChild(m_d->bTaggingMaterial);
650  // delete m_d->bTaggingTexture;
651  // delete m_d->bTaggingMaterial;
652  m_d->bTaggingTexture = 0;
653  m_d->bTaggingMaterial = 0;
654 
655  // float r = 0.4; float g = 0.15; float b = 0.0; float br = 0.8; float tr = 0.3; // reddish color
656  // VP1MaterialButton::setMaterialParameters( mat, r, g, b, br /*brightness*/, tr /*transparency*/ );
657 
658  if (! mat) {
659  messageVerbose("taking the material from the controller");
661  m_d->bTaggingSwitch->addChild( m_d->bTaggingMaterial );
662  }
663  else {
664  messageVerbose("taking the argument material");
666  m_d->bTaggingSwitch->addChild( m_d->bTaggingMaterial );
667  }
668 
669  //std::cout << "--> new mat: " << m_d->bTaggingMaterial << std::endl;
670 
671  updateBTaggingSwitchAllJets(); // update switch all jets
672  updateBTaggingAllJets(); // update cut for all jets
673  }
674 }
675 
676 
677 //____________________________________________________________________
678 void IParticleCollHandle_Jet::setBTaggingTagger(const QString & tagger){
679 
680  // std::cout << "current bTaggingTagger: " << m_d->bTaggingTagger << " - new: " << tagger << std::endl;
681 
682  if (m_d->bTaggingTagger == tagger.toStdString())
683  return;
684 
685  m_d->bTaggingTagger = tagger.toStdString();
686 
687  if (!isLoaded())
688  return;
689 
690  messageVerbose("BTaggingTagger change to: " +tagger+ " (with cut: " + QString::number(m_d->bTaggingCut) + "). Updating "+str(getHandlesList().count())+" jets");
691 
692  updateBTaggingAllJets(); // update all jets
693 }
694 
695 
696 //____________________________________________________________________
698 
699  if (m_d->bTaggingCut == wCut)
700  return;
701 
702  m_d->bTaggingCut = wCut;
703 
704  if (!isLoaded())
705  return;
706 
707  messageVerbose("BTaggingCut change to "+str(m_d->bTaggingCut)+". Updating "+str(getHandlesList().count())+" jets");
708 
709  updateBTaggingAllJets(); // update all jets
710 
711 }
712 
713 //____________________________________________________________________
715 {
716  messageVerbose("IParticleCollHandle_Jet::updateBTaggingAllJets()");
719  AODHandleBase* handle=0;
720  while ((handle=getNextHandle()))
721  {
722  IParticleHandle_Jet* jet = dynamic_cast<IParticleHandle_Jet*>(handle);
723  if (jet && jet->has3DObjects()) {
724  jet->updateBTagging(m_d->bTaggingTagger, m_d->bTaggingCut);
725  } else {
726  message("ERROR Handle of wrong type!");
727  }
728  }
729  largeChangesEnd();
730 }
731 
732 //____________________________________________________________________
734 {
735  messageVerbose("IParticleCollHandle_Jet::updateBTaggingSwitchAllJets()");
738  AODHandleBase* handle=0;
739  while ((handle=getNextHandle()))
740  {
741  IParticleHandle_Jet* jet = dynamic_cast<IParticleHandle_Jet*>(handle);
742  if (jet && jet->has3DObjects()) {
743  jet->updateBTaggingSwitch(m_d->bTaggingSwitch);
744  } else {
745  message("ERROR Handle of wrong type!");
746  }
747  }
748  largeChangesEnd();
749 }
750 
751 
752 //____________________________________________________________________
754 {
755  if (ok) {
756  messageVerbose("IParticleCollHandle_Jet::setBTaggingMaterialChanged()");
758  }
759 }
760 
761 //____________________________________________________________________
763  if (ok)
765 }
766 
767 
768 //____________________________________________________________________
770 {
771  messageDebug("IParticleCollHandle_Jet::persistifiableState() - start...");
772 
773  // if (!m_d->matButton) {
774  // message("ERROR: persistifiableState() called before init()");
775  // return QByteArray();
776  // }
777 
778 
779  VP1Serialise serialise(1/*version*/);
780 
781  // settings
782  serialise.disableUnsavedChecks();
783 
784  // SAVE THE CHECKED/UNCHECKED STATUS OF THE COLLECTION
785  serialise.save(visible());
786 
787  // SAVE THE MATERIAL BUTTON
788  //Q_ASSERT(m_d->matButton&&"Did you forget to call init() on this VP1StdCollection?");
789  //serialise.save(m_d->matButton->saveState());
790 
791  // SAVE THE EXTRA-STATES
792  serialise.save(extraWidgetsState());//version 1+
793 
794  // SAVE MATERIAL SETTINGS / CUTS
796 
797  messageDebug("IParticleCollHandle_Jet::persistifiableState() - end.");
798  return serialise.result();
799 }
800 
801 //____________________________________________________________________
802 void IParticleCollHandle_Jet::setState(const QByteArray&state)
803 {
804  messageDebug("IParticleCollHandle_Jet::setState()");
805 
806  VP1Deserialise des(state);
807  des.disableUnrestoredChecks();
808  if (des.version()!=0&&des.version()!=1) {
809  messageDebug("Warning: Ignoring state with wrong version");
810  return;
811  }
812 
813  // save state
814 
815  bool vis = des.restoreBool();
816 
817  // QByteArray matState = des.restoreByteArray();
818  // m_d->matButton->restoreFromState(matState);
819  QByteArray extraWidgetState = des.version()>=1 ? des.restoreByteArray() : QByteArray();
820  setVisible(vis);
821 
822  if (extraWidgetState!=QByteArray())
823  setExtraWidgetsState(extraWidgetState);
824 
825  // MATERIAL SETTINGS / CUTS
826  messageDebug("restoring material collection button...");
827  des.restore(m_d->collSettingsButton);
828 
829  messageDebug("reset all caches storing values for cuts...");
831 
832  messageDebug("recheck all handles...");
834 
835 }
836 
837 
839 {
840  // kinetic cuts
844  setScale( this->scale() );
845  // colouring
847  // b-tagging
851  // maxR
853 }
854 
855 void IParticleCollHandle_Jet::dumpToJSON( std::ofstream& str) const {
856  str << "\""<<name().toLatin1().data()<<"\":{";
857 
858  unsigned int num=0;
859  for (auto handle : getHandlesList() ) {
860  if (handle->visible()) {
861  if (num) str <<",\n";
862  handle->dumpToJSON(str);
863  }
864  }
865 
866  str << "}";
867 }
868 
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
VP1Serialise.h
AODCollHandleBase::setExtraWidgetsState
void setExtraWidgetsState(const QByteArray &)
Definition: AODCollHandleBase.cxx:519
IParticleCollHandle_Jet::Imp::collSettingsButton
JetCollectionSettingsButton * collSettingsButton
Definition: IParticleCollHandle_Jet.cxx:90
JetCollectionSettingsButton::bTaggingTagger
QString bTaggingTagger() const
Definition: JetCollectionSettingsButton.cxx:215
DataModel_detail::const_iterator
Const iterator class for DataVector/DataList.
Definition: DVLIterator.h:82
IParticleCollHandle_Jet::Imp::bTaggingTexture
SoTexture2 * bTaggingTexture
Definition: IParticleCollHandle_Jet.cxx:108
JetCollectionSettingsButton::cutAllowedEta
VP1Interval cutAllowedEta() const
Definition: JetCollectionSettingsButton.cxx:799
VP1Deserialise.h
VP1Serialise
Definition: VP1Serialise.h:45
python.SystemOfUnits.m
int m
Definition: SystemOfUnits.py:91
max
#define max(a, b)
Definition: cfImp.cxx:41
IParticleCollHandle_Jet::IParticleCollHandle_Jet
IParticleCollHandle_Jet(AODSysCommonData *, const QString &name, xAOD::Type::ObjectType type)
Definition: IParticleCollHandle_Jet.cxx:124
GlobalVariables.phirange
phirange
Definition: GlobalVariables.py:64
phi
Scalar phi() const
phi method
Definition: AmgMatrixBasePlugin.h:64
AODHandleBase
Definition: AODHandleBase.h:43
JetCollectionSettingsButton::bTaggingCut
double bTaggingCut() const
Definition: JetCollectionSettingsButton.cxx:211
PathResolver::find_file
static std::string find_file(const std::string &logical_file_name, const std::string &search_path, SearchType search_type=LocalSearch)
Definition: PathResolver.cxx:251
RoiUtil::serialise
void serialise(const std::vector< const IRoiDescriptor * > &rois, roiserial_type &s)
serialise an entire vector of IRoiDescriptors
Definition: RoiSerialise.cxx:45
ObjectType
ObjectType
Definition: BaseObject.h:11
IParticleCollHandle_Jet::Imp::maxR
double maxR
Definition: IParticleCollHandle_Jet.cxx:99
AODSysCommonData
Definition: AODSysCommonData.h:42
rootconvert.fName
string fName
Definition: rootconvert.py:5
IParticleCollHandle_Jet::setBTaggingTagger
void setBTaggingTagger(const QString &)
Definition: IParticleCollHandle_Jet.cxx:678
IParticleCollHandle_Jet::maxR
double maxR() const
Definition: IParticleCollHandle_Jet.cxx:338
JetCollectionSettingsButton::bTaggingMaterial
SoMaterial * bTaggingMaterial() const
Definition: JetCollectionSettingsButton.cxx:223
JetCollectionSettingsButton::setMaterial
virtual bool setMaterial(SoMaterial *)
Definition: JetCollectionSettingsButton.cxx:414
VP1Msg.h
mat
GeoMaterial * mat
Definition: LArDetectorConstructionTBEC.cxx:53
VP1HelperClassBase::messageVerbose
void messageVerbose(const QString &) const
Definition: VP1HelperClassBase.cxx:78
IParticleCollHandle_Jet::load
virtual bool load()
Definition: IParticleCollHandle_Jet.cxx:460
JetCollectionSettingsButton
Definition: JetCollectionSettingsButton.h:14
IParticleCollHandleBase::getPtAllowall
bool getPtAllowall()
Definition: IParticleCollHandleBase.h:114
fillPileUpNoiseLumi.connect
string connect
Definition: fillPileUpNoiseLumi.py:70
python.SystemOfUnits.MeV
int MeV
Definition: SystemOfUnits.py:154
CSV_InDetExporter.new
new
Definition: CSV_InDetExporter.py:145
JetCollectionSettingsButton::getMaterialButton
VP1MaterialButton * getMaterialButton() const
Definition: JetCollectionSettingsButton.cxx:422
skel.it
it
Definition: skel.GENtoEVGEN.py:423
IParticleCollHandle_Jet::setState
void setState(const QByteArray &)
Provide specific implementation.
Definition: IParticleCollHandle_Jet.cxx:802
M_PI
#define M_PI
Definition: ActiveFraction.h:11
IParticleCollHandle_Jet::rerandomise
void rerandomise()
Definition: IParticleCollHandle_Jet.cxx:431
JetCollectionSettingsButton::randomJetColours
bool randomJetColours() const
Definition: JetCollectionSettingsButton.cxx:871
VP1StdCollection::init
virtual void init(VP1MaterialButtonBase *button=0)
Definition: VP1StdCollection.cxx:73
JetCollectionSettingsButton::bTaggingEnabled
bool bTaggingEnabled() const
Definition: JetCollectionSettingsButton.cxx:227
VP1StdCollection::largeChangesBegin
virtual void largeChangesBegin()
Definition: VP1StdCollection.cxx:228
IParticleCollHandle_Jet::Imp::isMaxR
bool isMaxR
Definition: IParticleCollHandle_Jet.cxx:98
IParticleCollHandle_Jet::Imp::name
QString name
Definition: IParticleCollHandle_Jet.cxx:86
IParticleCollHandle_Jet::setMaxR
void setMaxR(const double &max)
Definition: IParticleCollHandle_Jet.cxx:345
IParticleCollHandle_Jet::defaultColor
virtual QColor defaultColor() const
Definition: IParticleCollHandle_Jet.h:60
VP1MaterialButton::lastAppliedDiffuseColour
QColor lastAppliedDiffuseColour() const
Definition: VP1MaterialButton.cxx:167
JetCollectionSettingsButton::cutAllowedPt
VP1Interval cutAllowedPt() const
Definition: JetCollectionSettingsButton.cxx:763
VP1String::str
static QString str(const QString &s)
Definition: VP1String.h:49
VP1HelperClassBase::messageDebug
void messageDebug(const QString &) const
Definition: VP1HelperClassBase.cxx:65
JetCollectionSettingsButton::cutAllowedPhi
QList< VP1Interval > cutAllowedPhi() const
Definition: JetCollectionSettingsButton.cxx:807
IParticleCollHandleBase::setCutAllowedPt
void setCutAllowedPt(const VP1Interval &)
Definition: IParticleCollHandleBase.cxx:218
mapkey::sys
@ sys
Definition: TElectronEfficiencyCorrectionTool.cxx:42
IParticleCollHandleBase::setCutAllowedPhi
void setCutAllowedPhi(const QList< VP1Interval > &)
Definition: IParticleCollHandleBase.cxx:284
XMLtoHeader.count
count
Definition: XMLtoHeader.py:85
IParticleCollHandle_Jet::setupSettingsFromControllerSpecific
virtual void setupSettingsFromControllerSpecific(const AODSystemController *)
For extensions specific to this collection.
Definition: IParticleCollHandle_Jet.cxx:229
IParticleCollHandleBase::getCutAllowedEta
const VP1Interval & getCutAllowedEta()
Definition: IParticleCollHandleBase.h:112
IParticleCollHandle_Jet::resetCachedValuesCuts
void resetCachedValuesCuts()
Definition: IParticleCollHandle_Jet.cxx:838
AODCollHandleBase::common
const AODSysCommonData * common() const
Definition: AODCollHandleBase.h:88
IParticleCollHandle_Jet::cut
virtual bool cut(AODHandleBase *)
Definition: IParticleCollHandle_Jet.cxx:532
VP1SGContentsHelper::getKeys
QStringList getKeys() const
Definition: VP1SGContentsHelper.h:55
IParticleHandle_Jet
Definition: IParticleHandle_Jet.h:32
IParticleCollHandleBase::getHandlesList
QList< AODHandleBase * > getHandlesList() const
Definition: IParticleCollHandleBase.cxx:139
IVP1System
Definition: IVP1System.h:36
jet
Definition: JetCalibTools_PlotJESFactors.cxx:23
Amg::toString
std::string toString(const Translation3D &translation, int precision=4)
GeoPrimitvesToStringConverter.
Definition: GeoPrimitivesToStringConverter.h:40
IParticleCollHandle_Jet::Imp::bTaggingSwitch
SoSwitch * bTaggingSwitch
Definition: IParticleCollHandle_Jet.cxx:107
IParticleCollHandle_Jet::Imp::bTaggingMaterial
SoMaterial * bTaggingMaterial
Definition: IParticleCollHandle_Jet.cxx:109
VP1StdCollection::setVisible
void setVisible(bool)
Definition: VP1StdCollection.cxx:160
IParticleCollHandle_Jet
Definition: IParticleCollHandle_Jet.h:26
IParticleCollHandle_Jet::showParametersChanged
void showParametersChanged(bool)
Definition: IParticleCollHandle_Jet.cxx:592
IParticleCollHandle_Jet::setRandomJetColours
void setRandomJetColours(const bool &)
Definition: IParticleCollHandle_Jet.cxx:396
AODSystemController
Definition: AODSystemController.h:43
JetCollectionSettingsButton::maxR
double maxR()
Returns -1 if disabled in GUI, or value in m if enabled.
Definition: JetCollectionSettingsButton.cxx:202
IParticleCollHandleBase::getPhiAllowall
bool getPhiAllowall()
Definition: IParticleCollHandleBase.h:116
master.flag
bool flag
Definition: master.py:29
JetCollectionSettingsButton::bTaggingSkin
QString bTaggingSkin() const
Definition: JetCollectionSettingsButton.cxx:219
VP1StdCollection::visibilityChanged
void visibilityChanged(bool)
contains
bool contains(const std::string &s, const std::string &regx)
does a string contain the substring
Definition: hcg.cxx:111
IParticleCollHandle_Jet::init
virtual void init(VP1MaterialButtonBase *matBut=0)
Definition: IParticleCollHandle_Jet.cxx:172
JetCollectionSettingsButton::setMaterialText
void setMaterialText(const QString &)
Definition: JetCollectionSettingsButton.cxx:181
TEvent.h
AODCollHandleBase::extraWidgetsState
QByteArray extraWidgetsState() const
Definition: AODCollHandleBase.cxx:510
IParticleCollHandle_Jet::Imp::possiblyUpdateGUI
void possiblyUpdateGUI()
Definition: IParticleCollHandle_Jet.cxx:116
IParticleCollHandle_Jet::setBTaggingEnabled
void setBTaggingEnabled(const bool &)
Definition: IParticleCollHandle_Jet.cxx:599
Init.h
VP1StdCollection::text
QString text() const
Definition: VP1StdCollection.cxx:132
IParticleCollHandle_Jet::dumpToJSON
virtual void dumpToJSON(std::ofstream &) const
Definition: IParticleCollHandle_Jet.cxx:855
IParticleCollHandleBase::cut
virtual bool cut(AODHandleBase *)
Definition: IParticleCollHandleBase.cxx:146
IParticleCollHandleBase::getEtaAllowall
bool getEtaAllowall()
Definition: IParticleCollHandleBase.h:115
IParticleCollHandleBase::setCutAllowedEta
void setCutAllowedEta(const VP1Interval &)
Definition: IParticleCollHandleBase.cxx:259
VP1Deserialise
Definition: VP1Deserialise.h:44
DataVector
Derived DataVector<T>.
Definition: DataVector.h:581
IParticleCollHandle_Jet::setBTaggingMaterialChanged
void setBTaggingMaterialChanged(const bool &)
Definition: IParticleCollHandle_Jet.cxx:753
AODSysCommonData.h
min
#define min(a, b)
Definition: cfImp.cxx:40
IParticleCollHandle_Jet::setBTaggingMaterial
void setBTaggingMaterial(SoMaterial *mat=NULL)
Definition: IParticleCollHandle_Jet.cxx:639
trigbs_pickEvents.num
num
Definition: trigbs_pickEvents.py:76
JetCollectionSettingsButton::saveState
QByteArray saveState() const
fill out with the state of the object (used for drag and drop etc)
Definition: JetCollectionSettingsButton.cxx:622
IParticleCollHandle_Jet::updateBTaggingSwitchAllJets
void updateBTaggingSwitchAllJets()
Definition: IParticleCollHandle_Jet.cxx:733
IParticleCollHandle_Jet::Imp::updateGUICounter
int updateGUICounter
Definition: IParticleCollHandle_Jet.cxx:89
AODCollHandleBase::setupSettingsFromController
void setupSettingsFromController(const AODSystemController *)
Definition: AODCollHandleBase.cxx:112
IParticleCollHandle_Jet::Imp::Imp
Imp()
Definition: IParticleCollHandle_Jet.cxx:81
IParticleCollHandle_Jet::setScale
void setScale(const double &s)
Definition: IParticleCollHandle_Jet.cxx:289
PathResolver.h
VP1HelperClassBase::systemBase
IVP1System * systemBase() const
Definition: VP1HelperClassBase.h:50
python.selection.number
number
Definition: selection.py:20
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
IParticleCollHandle_Jet::persistifiableState
QByteArray persistifiableState() const
Provide specific implementation.
Definition: IParticleCollHandle_Jet.cxx:769
plotBeamSpotMon.b
b
Definition: plotBeamSpotMon.py:77
JetCollectionSettingsButton::bTaggingRenderingMaterial
bool bTaggingRenderingMaterial() const
Definition: JetCollectionSettingsButton.cxx:235
VP1MaterialButton::createMaterial
static SoMaterial * createMaterial(const QColor &, const double &brightness=0.0, const double &transp=0.0)
Definition: VP1MaterialButton.cxx:786
VP1StdCollection::isLoaded
bool isLoaded() const
Definition: VP1StdCollection.cxx:148
VP1Msg::messageVerbose
static void messageVerbose(const QString &)
Definition: VP1Msg.cxx:84
IParticleCollHandle_Jet.h
JetCollectionSettingsButton::is_bTaggingSkinEnabled
bool is_bTaggingSkinEnabled() const
Definition: JetCollectionSettingsButton.cxx:240
IParticleCollHandle_Jet::scale
double scale() const
Definition: IParticleCollHandle_Jet.cxx:332
IParticleCollHandle_Jet::setBTaggingSkin
void setBTaggingSkin(const QString &filename)
Definition: IParticleCollHandle_Jet.cxx:609
VP1SGContentsHelper
Definition: VP1SGContentsHelper.h:26
IParticleCollHandle_Jet::Imp::bTaggingCut
double bTaggingCut
Definition: IParticleCollHandle_Jet.cxx:106
VP1MaterialButtonBase
Definition: VP1MaterialButton.h:25
IParticleCollHandle_Jet::isRandomColors
bool isRandomColors() const
Definition: IParticleCollHandle_Jet.cxx:381
VP1StdCollection::largeChangesEnd
virtual void largeChangesEnd()
Definition: VP1StdCollection.cxx:239
SG::IAuxStore
Interface for non-const operations on an auxiliary store.
Definition: IAuxStore.h:48
JetCollectionSettingsButton.h
IParticleCollHandleBase::handleIterationBegin
virtual void handleIterationBegin()
Definition: IParticleCollHandleBase.cxx:123
DataVector::end
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
python.SystemOfUnits.mm
int mm
Definition: SystemOfUnits.py:83
AODCollHandleBase::collVisibilityChanged
void collVisibilityChanged(bool)
Definition: AODCollHandleBase.cxx:393
IParticleCollHandle_Jet::collSettingsButton
const JetCollectionSettingsButton & collSettingsButton() const
Definition: IParticleCollHandle_Jet.cxx:279
VP1Interval
Definition: VP1Interval.h:23
IParticleCollHandle_Jet::availableCollections
static QStringList availableCollections(IVP1System *)
Definition: IParticleCollHandle_Jet.cxx:71
IParticleCollHandle_Jet::Imp::randomColours
bool randomColours
Definition: IParticleCollHandle_Jet.cxx:97
JetContainer.h
IParticleCollHandle_Jet::Imp::theclass
IParticleCollHandle_Jet * theclass
Definition: IParticleCollHandle_Jet.cxx:88
IParticleCollHandle_Jet::setBTaggingCut
void setBTaggingCut(const double &)
Definition: IParticleCollHandle_Jet.cxx:697
IVP1System::updateGUI
void updateGUI()
Definition: IVP1System.cxx:262
VP1Msg::message
static void message(const QString &, IVP1System *sys=0)
Definition: VP1Msg.cxx:30
IParticleCollHandle_Jet::setBTaggingSkinChanged
void setBTaggingSkinChanged(const bool &ok)
Definition: IParticleCollHandle_Jet.cxx:762
IParticleCollHandle_Jet::Imp
Definition: IParticleCollHandle_Jet.cxx:78
Pythia8_RapidityOrderMPI.val
val
Definition: Pythia8_RapidityOrderMPI.py:14
IParticleCollHandleBase::getCutAllowedPt
const VP1Interval & getCutAllowedPt()
Definition: IParticleCollHandleBase.h:111
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
IParticleCollHandleBase::getNextHandle
virtual AODHandleBase * getNextHandle()
Definition: IParticleCollHandleBase.cxx:130
IParticleCollHandle_Jet::Imp::m_jetMaterialDefault
SoMaterial * m_jetMaterialDefault
Definition: IParticleCollHandle_Jet.cxx:102
VP1StdCollection::visible
bool visible() const
Definition: VP1StdCollection.cxx:142
IParticleCollHandleBase::addHandle
void addHandle(AODHandleBase *)
Definition: IParticleCollHandleBase.cxx:111
CaloCellTimeCorrFiller.filename
filename
Definition: CaloCellTimeCorrFiller.py:24
IParticleCollHandle_Jet::~IParticleCollHandle_Jet
virtual ~IParticleCollHandle_Jet()
Definition: IParticleCollHandle_Jet.cxx:162
calibdata.cd
cd
Definition: calibdata.py:51
VP1HelperClassBase::message
void message(const QString &) const
Definition: VP1HelperClassBase.cxx:49
IParticleCollHandleBase::getCutAllowedPhi
QList< VP1Interval > getCutAllowedPhi()
Definition: IParticleCollHandleBase.h:113
AODCollHandleBase::update3DObjectsOfAllHandles
void update3DObjectsOfAllHandles()
Definition: AODCollHandleBase.cxx:223
str
Definition: BTagTrackIpAccessor.cxx:11
IParticleCollHandle_Jet::updateBTaggingAllJets
void updateBTaggingAllJets()
Definition: IParticleCollHandle_Jet.cxx:714
VP1SGAccessHelper
Definition: VP1SGAccessHelper.h:25
IParticleCollHandle_Jet::Imp::bTaggingTagger
std::string bTaggingTagger
Definition: IParticleCollHandle_Jet.cxx:105
JetCollectionSettingsButton::bTaggingRenderingSkin
bool bTaggingRenderingSkin() const
Definition: JetCollectionSettingsButton.cxx:231
IParticleCollHandleBase
Base class for collections holding AOD objects of iParticle type Handles pt etc cuts Local data:
Definition: IParticleCollHandleBase.h:50
GeV
#define GeV
Definition: CaloTransverseBalanceVecMon.cxx:30
AODCollHandleBase::recheckCutStatusOfAllVisibleHandles
void recheckCutStatusOfAllVisibleHandles()
Definition: AODCollHandleBase.cxx:144
python.compressB64.c
def c
Definition: compressB64.py:93
IParticleCollHandle_Jet::m_d
Imp * m_d
Definition: IParticleCollHandle_Jet.h:82
VP1SGAccessHelper.h
IParticleHandle_Jet.h
JetCollectionSettingsButton::is_bTaggingMaterialEnabled
bool is_bTaggingMaterialEnabled() const
Definition: JetCollectionSettingsButton.cxx:246
xAOD::Jet
Jet_v1 Jet
Definition of the current "jet version".
Definition: Event/xAOD/xAODJet/xAODJet/Jet.h:17
IVP1System.h
query_example.des
des
Definition: query_example.py:9
AODCollHandleBase::name
QString name() const
Definition: AODCollHandleBase.cxx:130
DataVector::begin
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
VP1SGContentsHelper.h
IParticleCollHandle_Jet::Imp::scale
double scale
Definition: IParticleCollHandle_Jet.cxx:96