ATLAS Offline Software
Loading...
Searching...
No Matches
TauJet_v1.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// $Id: TauJet_v1.cxx 740338 2016-04-14 16:03:58Z griffith $
6
7
8// System include(s):
9extern "C" {
10# include <cstdint>
11}
12#include <bitset>
13
14// EDM include(s):
16
17// Local include(s):
20#include "TauJetAccessors_v1.h"
21
22namespace xAOD {
23
27
28
33
34
35 //primitive setters and getters for jetseed 4-vector
36 AUXSTORE_PRIMITIVE_GETTER_WITH_CAST( TauJet_v1, float, double, ptJetSeed)
37 AUXSTORE_PRIMITIVE_GETTER_WITH_CAST( TauJet_v1, float, double, etaJetSeed)
38 AUXSTORE_PRIMITIVE_GETTER_WITH_CAST( TauJet_v1, float, double, phiJetSeed)
39 AUXSTORE_PRIMITIVE_GETTER_WITH_CAST( TauJet_v1, float, double, mJetSeed)
40
41 //primitive setters and getters for jetseed 4-vector
42 AUXSTORE_PRIMITIVE_GETTER_WITH_CAST( TauJet_v1, float, double, ptDetectorAxis)
43 AUXSTORE_PRIMITIVE_GETTER_WITH_CAST( TauJet_v1, float, double, etaDetectorAxis)
44 AUXSTORE_PRIMITIVE_GETTER_WITH_CAST( TauJet_v1, float, double, phiDetectorAxis)
45 AUXSTORE_PRIMITIVE_GETTER_WITH_CAST( TauJet_v1, float, double, mDetectorAxis)
46
47 //primitive setters and getters for IntermediateAxis 4-vector
48 AUXSTORE_PRIMITIVE_GETTER_WITH_CAST( TauJet_v1, float, double, ptIntermediateAxis)
49 AUXSTORE_PRIMITIVE_GETTER_WITH_CAST( TauJet_v1, float, double, etaIntermediateAxis)
50 AUXSTORE_PRIMITIVE_GETTER_WITH_CAST( TauJet_v1, float, double, phiIntermediateAxis)
51 AUXSTORE_PRIMITIVE_GETTER_WITH_CAST( TauJet_v1, float, double, mIntermediateAxis)
52
53 //primitive setters and getters for TauEnergyScale 4-vector
54 AUXSTORE_PRIMITIVE_GETTER_WITH_CAST( TauJet_v1, float, double, ptTauEnergyScale)
55 AUXSTORE_PRIMITIVE_GETTER_WITH_CAST( TauJet_v1, float, double, etaTauEnergyScale)
56 AUXSTORE_PRIMITIVE_GETTER_WITH_CAST( TauJet_v1, float, double, phiTauEnergyScale)
57 AUXSTORE_PRIMITIVE_GETTER_WITH_CAST( TauJet_v1, float, double, mTauEnergyScale)
58
59 //primitive setters and getters for jetseed 4-vector
60 AUXSTORE_PRIMITIVE_GETTER_WITH_CAST( TauJet_v1, float, double, ptTauEtaCalib)
61 AUXSTORE_PRIMITIVE_GETTER_WITH_CAST( TauJet_v1, float, double, etaTauEtaCalib)
62 AUXSTORE_PRIMITIVE_GETTER_WITH_CAST( TauJet_v1, float, double, phiTauEtaCalib)
63 AUXSTORE_PRIMITIVE_GETTER_WITH_CAST( TauJet_v1, float, double, mTauEtaCalib)
64
65 //primitive setters and getters for jetseed 4-vector
66 AUXSTORE_PRIMITIVE_GETTER_WITH_CAST( TauJet_v1, float, double, ptPanTauCellBasedProto)
67 AUXSTORE_PRIMITIVE_GETTER_WITH_CAST( TauJet_v1, float, double, etaPanTauCellBasedProto)
68 AUXSTORE_PRIMITIVE_GETTER_WITH_CAST( TauJet_v1, float, double, phiPanTauCellBasedProto)
69 AUXSTORE_PRIMITIVE_GETTER_WITH_CAST( TauJet_v1, float, double, mPanTauCellBasedProto)
70
71 //primitive setters and getters for jetseed 4-vector
72 AUXSTORE_PRIMITIVE_GETTER_WITH_CAST( TauJet_v1, float, double, ptPanTauCellBased)
73 AUXSTORE_PRIMITIVE_GETTER_WITH_CAST( TauJet_v1, float, double, etaPanTauCellBased)
74 AUXSTORE_PRIMITIVE_GETTER_WITH_CAST( TauJet_v1, float, double, phiPanTauCellBased)
75 AUXSTORE_PRIMITIVE_GETTER_WITH_CAST( TauJet_v1, float, double, mPanTauCellBased)
76
77
78 double TauJet_v1::e() const {
79 return genvecP4().E();
80 }
81
82
83 double TauJet_v1::rapidity() const {
84 return genvecP4().Rapidity();
85 }
86
89 p4.SetPtEtaPhiM( pt(), eta(), phi(),m());
90 return p4;
91 }
92
96
98
100 switch(calib) {
102 p4.SetPtEtaPhiM( ptJetSeed(), etaJetSeed(), phiJetSeed(), mJetSeed());
103 break;
106 break;
109 break;
112 break;
115 break;
118 break;
121 break;
122 default:
123 p4.SetPtEtaPhiM( pt(), eta(), phi(), m());
124 }
125 return p4;
126 }
127
149
150
151 void TauJet_v1::setP4(double pt, double eta, double phi, double m) {
152 static const Accessor< float > acc1( "pt" );
153 static const Accessor< float > acc2( "eta" );
154 static const Accessor< float > acc3( "phi" );
155 static const Accessor< float > acc4( "m" );
156 acc1( *this )=pt;
157 acc2( *this )=eta;
158 acc3( *this )=phi;
159 acc4( *this )=m;
160 }
161
162 bool TauJet_v1::setP4(const TauJetParameters::TauCalibType calib, double pt, double eta, double phi, double m) {
163 TauJetCalibTypeMapper_v1 typeMapper;
164 std::string calibString = "";
165 bool result = typeMapper.getValue(calib, calibString);
166 if (result) {
167 Accessor< float > accTauPtCalib( "pt"+calibString );
168 Accessor< float > accTauEtaCalib( "eta"+calibString );
169 Accessor< float > accTauPhiCalib( "phi"+calibString );
170 Accessor< float > accTauMCalib( "m"+calibString );
171 accTauPtCalib( *this )=pt;
172 accTauEtaCalib( *this )=eta;
173 accTauPhiCalib( *this )=phi;
174 accTauMCalib( *this )=m;
175 return true;
176 }
177 else {
178 return false;
179 }
180 }
181
182
183 Type::ObjectType TauJet_v1::type() const {
184 return Type::Tau;
185 }
186
187 AUXSTORE_PRIMITIVE_SETTER_AND_GETTER( TauJet_v1, unsigned int, ROIWord , setROIWord )
189
190 //-------------------------------------------------------------------------
191 // Has discriminant
192 //-------------------------------------------------------------------------
194 {
195 // Get the discriminant accessor:
197 return acc != nullptr;
198 }
199
200
201 //-------------------------------------------------------------------------
202 // Get discriminant
203 //-------------------------------------------------------------------------
205 // Get the discriminant accessor:
207 if( ! acc ) return -1111.0;
208
209 // Retrieve the discriminant value:
210 return ( *acc )( *this );
211 }
212
213 //-------------------------------------------------------------------------
214 // Set discriminant
215 //-------------------------------------------------------------------------
217 ( *( xAODTau::discriminantAccessorV1( discriminant ) ) )( *this ) = value;
218 return;
219 }
220
221 //-------------------------------------------------------------------------
222 // Accept
223 //-------------------------------------------------------------------------
226 {
227 static const Accessor< uint32_t > acc( "isTauFlags" );
228 std::bitset<32> isTauFlags( acc( *this ) );
229 return isTauFlags[flag];
230 }
231
234 {
235 static const Accessor< uint32_t > acc( "isTauFlags" );
236 std::bitset<32> isTauFlags( acc( *this ) );
237 isTauFlags[flag] = value;
238 acc( *this ) = isTauFlags.to_ulong();
239 }
240
241 //-------------------------------------------------------------------------
242 // Veto flags accessors
243 //-------------------------------------------------------------------------
246 {
247 static const Accessor< uint32_t > acc( "vetoFlags" );
248 std::bitset<32> vetoFlags( acc( *this ) );
249 vetoFlags[flag] = value;
250 acc( *this ) = vetoFlags.to_ulong();
251 }
252
255 {
256 static const Accessor< uint32_t > acc( "vetoFlags" );
257 std::bitset<32> vetoFlags( acc( *this ) );
258 return vetoFlags[flag];
259 }
260
261
262
263 //-------------------------------------------------------------------------
264 // Get int detail via enum
265 //-------------------------------------------------------------------------
267 // Get the detail accessor:
269 if( ! acc ) return false;
270 if( ! acc->isAvailable( *this ) ) return false;
271
272 // Retrieve the detail value:
273 value = ( *acc )( *this );
274 return true;
275 }
276
277 //-------------------------------------------------------------------------
278 // Get float detail via enum
279 //-------------------------------------------------------------------------
281 // Get the detail accessor:
283 if( ! acc ) return false;
284 if( ! acc->isAvailable( *this ) ) return false;
285
286 // Retrieve the detail value:
287 value = ( *acc )( *this );
288 return true;
289 }
290
291 //-------------------------------------------------------------------------
292 // Set int detail via enum
293 //-------------------------------------------------------------------------
295 ( *( xAODTau::detailsAccessorV1<int>( detail ) ) )( *this ) = value;
296 }
297
298 //-------------------------------------------------------------------------
299 // Set float detail via enum
300 //-------------------------------------------------------------------------
302 ( *( xAODTau::detailsAccessorV1<float>( detail ) ) )( *this ) = value;
303 }
304
305
306 //-------------------------------------------------------------------------
307 // Get int panTauDetail via enum
308 //-------------------------------------------------------------------------
310 // Get the panTauDetail accessor:
312 if( ! acc ) return false;
313 if( ! acc->isAvailable( *this ) ) return false;
314
315 // Retrieve the panTauDetail value:
316 value = ( *acc )( *this );
317 return true;
318 }
319
320 //-------------------------------------------------------------------------
321 // Get float panTauDetail via enum
322 //-------------------------------------------------------------------------
324 // Get the panTauDetail accessor:
326 if( ! acc ) return false;
327 if( ! acc->isAvailable( *this ) ) return false;
328
329 // Retrieve the panTauDetail value:
330 value = ( *acc )( *this );
331 return true;
332 }
333
334 //-------------------------------------------------------------------------
335 // Set int panTauDetail via enum
336 //-------------------------------------------------------------------------
340
341 //-------------------------------------------------------------------------
342 // Set float panTauDetail via enum
343 //-------------------------------------------------------------------------
347
348
349
350
351
352
353 // setters and getters for the track links
356 trackLinks,
357 setTrackLinks )
358
360
361 const TrackParticle* TauJet_v1::track( size_t i ) const {
362 return ( *trackAcc( *this )[ i ] );
363 }
364
365 size_t TauJet_v1::nTracks() const {
366 return trackAcc( *this ).size();
367 }
368
370
371 trackAcc( *this ).push_back( tr );
372 return;
373 }
374
376 trackAcc( *this ).clear();
377 return;
378 }
379
380
381 int TauJet_v1::trackFilterPass(unsigned int numTrack) const
382 {
383 static const Accessor< std::vector <int > > trackPassAcc("trackFilterPass");
384 const std::vector<int>& vec=trackPassAcc(*this);
385 if (vec.size()<numTrack+1)
386 return -999;
387 else
388 return vec[numTrack];
389 }
390
391 void TauJet_v1::setTrackFilterPass(unsigned int numTrack, int pass)
392 {
393 static const Accessor< std::vector <int > > trackPassAcc("trackFilterPass");
394 std::vector<int>& vec=trackPassAcc(*this);
395 if (vec.size()<numTrack+1)
396 vec.resize(numTrack+1);
397 vec[numTrack]=pass;
398 }
399
400
401 //setter and getter for trackfilterprongs
402 AUXSTORE_PRIMITIVE_SETTER_AND_GETTER( TauJet_v1, int, trackFilterProngs , setTrackFilterProngs )
403 //setter and getter for trackfilterquality
404 AUXSTORE_PRIMITIVE_SETTER_AND_GETTER( TauJet_v1, int, trackFilterQuality , setTrackFilterQuality )
405 //setter and getter for pi0ConeDR
406 AUXSTORE_PRIMITIVE_SETTER_AND_GETTER( TauJet_v1, float, pi0ConeDR , setPi0ConeDR )
407
408
409
410 float TauJet_v1::trackEtaStrip(unsigned int numTrack) const
411 {
412 static const Accessor< std::vector <float > > trackEtaStripAcc("trackEtaStrip");
413 const std::vector<float>& vec=trackEtaStripAcc(*this);
414 if (vec.size()<numTrack+1)
415 return -999.0;
416 else
417 return vec[numTrack];
418 }
419
420 void TauJet_v1::setTrackEtaStrip(unsigned int numTrack, float eta)
421 {
422 static const Accessor< std::vector <float > > trackEtaStripAcc("trackEtaStrip");
423 std::vector<float>& vec=trackEtaStripAcc(*this);
424 if (vec.size()<numTrack+1)
425 vec.resize(numTrack+1);
426 vec[numTrack]=eta;
427 }
428
429
430 float TauJet_v1::trackPhiStrip(unsigned int numTrack) const
431 {
432 static const Accessor< std::vector <float > > trackPhiStripAcc("trackPhiStrip");
433 const std::vector<float>& vec=trackPhiStripAcc(*this);
434 if (vec.size()<numTrack+1)
435 return -999.0;
436 else
437 return vec[numTrack];
438 }
439
440 void TauJet_v1::setTrackPhiStrip(unsigned int numTrack, float phi)
441 {
442 static const Accessor< std::vector <float > > trackPhiStripAcc("trackPhiStrip");
443 std::vector<float>& vec=trackPhiStripAcc(*this);
444 if (vec.size()<numTrack+1)
445 vec.resize(numTrack+1);
446 vec[numTrack]=phi;
447 }
448
449
450
451 // setters and getters for the conversion track links
454 conversionTrackLinks,
455 setConversionTrackLinks )
456
457 static const SG::Accessor< TauJet_v1::TrackParticleLinks_t > convTrackAcc( "conversionTrackLinks" );
458
459 const TrackParticle* TauJet_v1::conversionTrack( size_t i ) const {
460 return ( *convTrackAcc( *this )[ i ] );
461 }
462
464 return convTrackAcc( *this ).size();
465 }
466
468
469 convTrackAcc( *this ).push_back( tr );
470 return;
471 }
472
474 convTrackAcc( *this ).clear();
475 return;
476 }
477
478 // setters and getters for the wide track links
481 wideTrackLinks,
482 setWideTrackLinks )
483
484 static const SG::Accessor< TauJet_v1::TrackParticleLinks_t > wideTrackAcc( "wideTrackLinks" );
485
486 const TrackParticle* TauJet_v1::wideTrack( size_t i ) const {
487 return ( *wideTrackAcc( *this )[ i ] );
488 }
489
490 size_t TauJet_v1::nWideTracks() const {
491 return wideTrackAcc( *this ).size();
492 }
493
495
496 wideTrackAcc( *this ).push_back( tr );
497 return;
498 }
499
501 wideTrackAcc( *this ).clear();
502 return;
503 }
504
505 // setters and getters for the other track links
508 otherTrackLinks,
509 setOtherTrackLinks )
510
511 static const SG::Accessor< TauJet_v1::TrackParticleLinks_t > otherTrackAcc( "otherTrackLinks" );
512
513 const TrackParticle* TauJet_v1::otherTrack( size_t i ) const {
514 return ( *otherTrackAcc( *this )[ i ] );
515 }
516
517 size_t TauJet_v1::nOtherTracks() const {
518 return otherTrackAcc( *this ).size();
519 }
520
522
523 otherTrackAcc( *this ).push_back( tr );
524 return;
525 }
526
528 otherTrackAcc( *this ).clear();
529 return;
530 }
531
535 jetLink,
536 setJetLink )
537
538 static const SG::Accessor< TauJet_v1::JetLink_t > jetAcc( "jetLink" );
539
540 const Jet* TauJet_v1::jet() const {
541 return ( *jetAcc( *this ) );
542 }
543
544
546 if( jetAcc( *this ).isValid() )
547 jetAcc( *this ).reset();
548 jetAcc( *this ).toContainedElement( *cont, jet );
549 }
550
551
552
556 vertexLink,
557 setVertexLink )
558
559 static const SG::Accessor< TauJet_v1::VertexLink_t > vertexAcc( "vertexLink" );
560
561 const Vertex* TauJet_v1::vertex() const {
562 return ( *vertexAcc( *this ) );
563 }
564
565
567 if( vertexAcc( *this ).isValid() )
568 vertexAcc( *this ).reset();
569 vertexAcc( *this ).toContainedElement( *cont, vertex );
570 }
571
572
573
577 secondaryVertexLink,
578 setSecondaryVertexLink )
579
580 static const SG::Accessor< TauJet_v1::VertexLink_t > secondaryVertexAcc( "secondaryVertexLink" );
581
582 const Vertex* TauJet_v1::secondaryVertex() const {
583 return ( *secondaryVertexAcc( *this ) );
584 }
585
586
588 if( secondaryVertexAcc( *this ).isValid() )
589 secondaryVertexAcc( *this ).reset();
590 secondaryVertexAcc( *this ).toContainedElement( *cont, vertex );
591 }
592
593
594
595
597 // setters and getters for the hadronic PFO links
600 hadronic_PFOLinks,
601 setHadronic_PFOLinks )
602
603
604
605 static const SG::Accessor< TauJet_v1::PFOLinks_t > hadronic_PFOAcc( "hadronic_PFOLinks" );
606
607 const PFO* TauJet_v1::hadronic_PFO( size_t i ) const {
608 return ( *hadronic_PFOAcc( *this )[ i ] );
609 }
610
612 return hadronic_PFOAcc( *this ).size();
613 }
614
616
617 hadronic_PFOAcc( *this ).push_back( pfo );
618 return;
619 }
620
622 hadronic_PFOAcc( *this ).clear();
623 return;
624 }
625
626 // setters and getters for the shot PFO links
629 shot_PFOLinks,
630 setShot_PFOLinks )
631
632
633
634 static const SG::Accessor< TauJet_v1::PFOLinks_t > shot_PFOAcc( "shot_PFOLinks" );
635
636 const PFO* TauJet_v1::shot_PFO( size_t i ) const {
637 return ( *shot_PFOAcc( *this )[ i ] );
638 }
639
640 size_t TauJet_v1::nShot_PFOs() const {
641 return shot_PFOAcc( *this ).size();
642 }
643
645
646 shot_PFOAcc( *this ).push_back( pfo );
647 return;
648 }
649
651 shot_PFOAcc( *this ).clear();
652 return;
653 }
654
655
656 // setters and getters for the charged PFO links
659 charged_PFOLinks,
660 setCharged_PFOLinks )
661
662
663
664 static const SG::Accessor< TauJet_v1::PFOLinks_t > charged_PFOAcc( "charged_PFOLinks" );
665
666 const PFO* TauJet_v1::charged_PFO( size_t i ) const {
667 return ( *charged_PFOAcc( *this )[ i ] );
668 }
669
671 return charged_PFOAcc( *this ).size();
672 }
673
675
676 charged_PFOAcc( *this ).push_back( pfo );
677 return;
678 }
679
681 charged_PFOAcc( *this ).clear();
682 return;
683 }
684
685
686
687 // setters and getters for the neutral PFO links
690 neutral_PFOLinks,
691 setNeutral_PFOLinks )
692
693
694
695 static const SG::Accessor< TauJet_v1::PFOLinks_t > neutral_PFOAcc( "neutral_PFOLinks" );
696
697 const PFO* TauJet_v1::neutral_PFO( size_t i ) const {
698 return ( *neutral_PFOAcc( *this )[ i ] );
699 }
700
702 return neutral_PFOAcc( *this ).size();
703 }
704
706
707 neutral_PFOAcc( *this ).push_back( pfo );
708 return;
709 }
710
712 neutral_PFOAcc( *this ).clear();
713 return;
714 }
715
716
717
718 // setters and getters for the pi0 PFO links
721 pi0_PFOLinks,
722 setPi0_PFOLinks )
723
724
725
726 static const SG::Accessor< TauJet_v1::PFOLinks_t > pi0_PFOAcc( "pi0_PFOLinks" );
727
728 const PFO* TauJet_v1::pi0_PFO( size_t i ) const {
729 return ( *pi0_PFOAcc( *this )[ i ] );
730 }
731
732 size_t TauJet_v1::nPi0_PFOs() const {
733 return pi0_PFOAcc( *this ).size();
734 }
735
737
738 pi0_PFOAcc( *this ).push_back( pfo );
739 return;
740 }
741
743 pi0_PFOAcc( *this ).clear();
744 return;
745 }
746
747
748
749
750
752 // setters and getters for the cellbased_charged PFO links
755 cellBased_Charged_PFOLinks,
756 setCellBased_Charged_PFOLinks )
757
758
759
760 static const SG::Accessor< TauJet_v1::PFOLinks_t > cellBased_Charged_PFOAcc( "cellBased_Charged_PFOLinks" );
761
762 const PFO* TauJet_v1::cellBased_Charged_PFO( size_t i ) const {
763 return ( *cellBased_Charged_PFOAcc( *this )[ i ] );
764 }
765
767 return cellBased_Charged_PFOAcc( *this ).size();
768 }
769
771
772 cellBased_Charged_PFOAcc( *this ).push_back( pfo );
773 return;
774 }
775
777 cellBased_Charged_PFOAcc( *this ).clear();
778 return;
779 }
780
781
782 // setters and getters for the cellbased_neutral PFO links
785 cellBased_Neutral_PFOLinks,
786 setCellBased_Neutral_PFOLinks )
787
788
789
790 static const SG::Accessor< TauJet_v1::PFOLinks_t > cellBased_Neutral_PFOAcc( "cellBased_Neutral_PFOLinks" );
791
792 const PFO* TauJet_v1::cellBased_Neutral_PFO( size_t i ) const {
793 return ( *cellBased_Neutral_PFOAcc( *this )[ i ] );
794 }
795
797 return cellBased_Neutral_PFOAcc( *this ).size();
798 }
799
801
802 cellBased_Neutral_PFOAcc( *this ).push_back( pfo );
803 return;
804 }
805
807 cellBased_Neutral_PFOAcc( *this ).clear();
808 return;
809 }
810
811
812
813 // setters and getters for the cellbased_pi0 PFO links
816 cellBased_Pi0_PFOLinks,
817 setCellBased_Pi0_PFOLinks )
818
819
820
821 static const SG::Accessor< TauJet_v1::PFOLinks_t > cellBased_Pi0_PFOAcc( "cellBased_Pi0_PFOLinks" );
822
823 const PFO* TauJet_v1::cellBased_Pi0_PFO( size_t i ) const {
824 return ( *cellBased_Pi0_PFOAcc( *this )[ i ] );
825 }
826
828 return cellBased_Pi0_PFOAcc( *this ).size();
829 }
830
832
833 cellBased_Pi0_PFOAcc( *this ).push_back( pfo );
834 return;
835 }
836
838 cellBased_Pi0_PFOAcc( *this ).clear();
839 return;
840 }
841
842
843
844
845
846
848 // setters and getters for the eflowRec_charged PFO links
851 eflowRec_Charged_PFOLinks,
852 setEflowRec_Charged_PFOLinks )
853
854
855
856 static const SG::Accessor< TauJet_v1::PFOLinks_t > eflowRec_Charged_PFOAcc( "eflowRec_Charged_PFOLinks" );
857
858 const PFO* TauJet_v1::eflowRec_Charged_PFO( size_t i ) const {
859 return ( *eflowRec_Charged_PFOAcc( *this )[ i ] );
860 }
861
863 return eflowRec_Charged_PFOAcc( *this ).size();
864 }
865
867
868 eflowRec_Charged_PFOAcc( *this ).push_back( pfo );
869 return;
870 }
871
873 eflowRec_Charged_PFOAcc( *this ).clear();
874 return;
875 }
876
877
878 // setters and getters for the eflowRec_neutral PFO links
881 eflowRec_Neutral_PFOLinks,
882 setEflowRec_Neutral_PFOLinks )
883
884
885
886 static const SG::Accessor< TauJet_v1::PFOLinks_t > eflowRec_Neutral_PFOAcc( "eflowRec_Neutral_PFOLinks" );
887
888 const PFO* TauJet_v1::eflowRec_Neutral_PFO( size_t i ) const {
889 return ( *eflowRec_Neutral_PFOAcc( *this )[ i ] );
890 }
891
893 return eflowRec_Neutral_PFOAcc( *this ).size();
894 }
895
897
898 eflowRec_Neutral_PFOAcc( *this ).push_back( pfo );
899 return;
900 }
901
903 eflowRec_Neutral_PFOAcc( *this ).clear();
904 return;
905 }
906
907
908
909 // setters and getters for the eflowRec_pi0 PFO links
912 eflowRec_Pi0_PFOLinks,
913 setEflowRec_Pi0_PFOLinks )
914
915
916
917 static const SG::Accessor< TauJet_v1::PFOLinks_t > eflowRec_Pi0_PFOAcc( "eflowRec_Pi0_PFOLinks" );
918
919 const PFO* TauJet_v1::eflowRec_Pi0_PFO( size_t i ) const {
920 return ( *eflowRec_Pi0_PFOAcc( *this )[ i ] );
921 }
922
924 return eflowRec_Pi0_PFOAcc( *this ).size();
925 }
926
928
929 eflowRec_Pi0_PFOAcc( *this ).push_back( pfo );
930 return;
931 }
932
934 eflowRec_Pi0_PFOAcc( *this ).clear();
935 return;
936 }
937
938
939 void TauJet_v1::dump() const {
940 /* keep these two lines to create the template methods. Otherwise they are optimzed away
941 * later: move these two lines into a dummy method, which nobody is calling
942 */
943 std::cout << this->detail<float>(xAOD::TauJetParameters::ipSigLeadTrk) << std::endl;
944 std::cout << this->detail<int>(xAOD::TauJetParameters::numTopoClusters) << std::endl;
945 }
946
947} // namespace xAOD
948
949// LocalWords: panTauDetail mJetSeed
Scalar eta() const
pseudorapidity method
#define AUXSTORE_PRIMITIVE_GETTER_WITH_CAST(CL, PERSTYPE, TRANSTYPE, NAME)
Macro creating a getter function with a type conversion.
#define AUXSTORE_PRIMITIVE_SETTER_AND_GETTER(CL, TYPE, NAME, SETTER)
Macro creating the accessors of primitive auxiliary properties.
#define AUXSTORE_OBJECT_SETTER_AND_GETTER(CL, TYPE, NAME, SETTER)
Macro creating the accessors of complex auxiliary properties.
std::vector< size_t > vec
Helper class to provide type-safe access to aux data.
IParticle()=default
TLorentzVector FourMom_t
Definition of the 4-momentum type.
SG::Accessor< T, ALLOC > Accessor
Definition AuxElement.h:572
void reset()
Function making sure that the object is ready for persistification.
Definition Jet_v1.cxx:231
Class describing a tau jet.
Definition TauJet_v1.h:38
void clearCellBased_Charged_PFOLinks()
Remove all cellbased_charged PFOs from the tau.
double ptTauEtaCalib() const
double etaTauEnergyScale() const
size_t nCellBased_Charged_PFOs() const
Get the number of cellbased_charged PFO particles associated with this tau.
const TrackParticle * otherTrack(size_t i) const
Get the pointer to a given track associated with this tau.
double phiPanTauCellBasedProto() const
size_t nOtherTracks() const
Get the number of track particles associated with this tau.
void setTrackPhiStrip(unsigned int numTrack, float phi)
const Jet * jet() const
size_t nConversionTracks() const
Get the number of track particles associated with this tau.
const PFO * charged_PFO(size_t i) const
Get the pointer to a given charged PFO associated with this tau.
void clearWideTrackLinks()
Remove all tracks from the tau.
void addCellBased_Pi0_PFOLink(const ElementLink< PFOContainer > &pfo)
add a cellbased_pi0 PFO to the tau
double phiPanTauCellBased() const
void setTrackEtaStrip(unsigned int numTrack, float eta)
size_t nEflowRec_Neutral_PFOs() const
Get the number of eflowRec_neutral PFO particles associated with this tau.
double phiJetSeed() const
TauJet_v1()
Default constructor.
Definition TauJet_v1.cxx:24
void addEflowRec_Pi0_PFOLink(const ElementLink< PFOContainer > &pfo)
add a eflowRec_pi0 PFO to the tau
void clearOtherTrackLinks()
Remove all tracks from the tau.
virtual FourMom_t p4() const
The full 4-momentum of the particle.
Definition TauJet_v1.cxx:87
const TrackParticle * conversionTrack(size_t i) const
Get the pointer to a given track associated with this tau.
void addHadronic_PFOLink(const ElementLink< PFOContainer > &pfo)
add a hadronic PFO to the tau
size_t nTracks() const
Get the number of track particles associated with this tau.
void clearEflowRec_Charged_PFOLinks()
Remove all eflowRec_charged PFOs from the tau.
virtual double pt() const
The transverse momentum ( ) of the particle.
void addEflowRec_Neutral_PFOLink(const ElementLink< PFOContainer > &pfo)
add a eflowRec_neutral PFO to the tau
bool hasDiscriminant(TauJetParameters::TauID discID) const
Check if class contains requested discriminant.
double etaIntermediateAxis() const
void setTrackFilterPass(unsigned int numTrack, int pass)
double phiIntermediateAxis() const
double phiDetectorAxis() const
void clearCellBased_Pi0_PFOLinks()
Remove all cellbased_pi0 PFOs from the tau.
bool flag(TauJetParameters::VetoFlags flag) const
Get veto flag.
float trackPhiStrip(unsigned int numTrack) const
const Vertex * secondaryVertex() const
void setJet(const xAOD::JetContainer *cont, const xAOD::Jet *jet)
void addConversionTrackLink(const ElementLink< TrackParticleContainer > &tr)
add a track to the tau
std::vector< ElementLink< xAOD::PFOContainer > > PFOLinks_t
Definition TauJet_v1.h:318
void clearHadronic_PFOLinks()
Remove all hadronic PFOs from the tau.
void setPanTauDetail(TauJetParameters::PanTauDetails panTauDetail, int value)
const PFO * cellBased_Charged_PFO(size_t i) const
Get the pointer to a given cellbased_charged PFO associated with this tau.
void setP4(double pt, double eta, double phi, double m)
Set methods for IParticle values.
const PFO * neutral_PFO(size_t i) const
Get the pointer to a given neutral PFO associated with this tau.
void setIsTau(TauJetParameters::IsTauFlag flag, bool value)
Set Flag for tau acceptance based on predefined arbitrary criteria.
double etaJetSeed() const
void addCharged_PFOLink(const ElementLink< PFOContainer > &pfo)
add a charged PFO to the tau
const PFO * eflowRec_Charged_PFO(size_t i) const
Get the pointer to a given eflowRec_charged PFO associated with this tau.
bool isTau(TauJetParameters::IsTauFlag flag) const
Get Flag for tau acceptance based on predefined arbitrary criteria.
size_t nCharged_PFOs() const
Get the number of charged PFO particles associated with this tau.
virtual double phi() const
The azimuthal angle ( ) of the particle.
double ptTauEnergyScale() const
double discriminant(TauJetParameters::TauID discID) const
Get value of discriminant.
void setSecondaryVertex(const xAOD::VertexContainer *cont, const xAOD::Vertex *vertex)
void clearCharged_PFOLinks()
Remove all charged PFOs from the tau.
float trackEtaStrip(unsigned int numTrack) const
void setVertex(const xAOD::VertexContainer *cont, const xAOD::Vertex *vertex)
size_t nEflowRec_Charged_PFOs() const
Get the number of eflowRec_charged PFO particles associated with this tau.
size_t nEflowRec_Pi0_PFOs() const
Get the number of eflowRec_pi0 PFO particles associated with this tau.
bool panTauDetail(TauJetParameters::PanTauDetails panTauDetail, int &value) const
Get and set values of pantau details variables via enum.
double phiTauEtaCalib() const
virtual Type::ObjectType type() const
The type of the object as a simple enumeration.
double phiTauEnergyScale() const
double mPanTauCellBasedProto() const
const PFO * cellBased_Neutral_PFO(size_t i) const
Get the pointer to a given cellbased_neutral PFO associated with this tau.
double mPanTauCellBased() const
const PFO * shot_PFO(size_t i) const
Get the pointer to a given shot PFO associated with this tau.
const PFO * eflowRec_Neutral_PFO(size_t i) const
Get the pointer to a given eflowRec_neutral PFO associated with this tau.
double mTauEnergyScale() const
const PFO * cellBased_Pi0_PFO(size_t i) const
Get the pointer to a given cellbased_pi0 PFO associated with this tau.
bool detail(TauJetParameters::Detail detail, int &value) const
Get and set values of common details variables via enum.
GenVecFourMom_t genvecP4() const
The full 4-momentum of the particle : internal taus type.
Definition TauJet_v1.cxx:93
double mDetectorAxis() const
void clearNeutral_PFOLinks()
Remove all neutral PFOs from the tau.
const PFO * pi0_PFO(size_t i) const
Get the pointer to a given pi0 PFO associated with this tau.
ElementLink< xAOD::VertexContainer > VertexLink_t
Definition TauJet_v1.h:204
const TrackParticle * wideTrack(size_t i) const
Get the pointer to a given track associated with this tau.
size_t nShot_PFOs() const
Get the number of shot PFO particles associated with this tau.
size_t nCellBased_Neutral_PFOs() const
Get the number of cellbased_neutral PFO particles associated with this tau.
void addPi0_PFOLink(const ElementLink< PFOContainer > &pfo)
add a pi0 PFO to the tau
virtual double rapidity() const
The true rapidity (y) of the particle.
Definition TauJet_v1.cxx:83
void addNeutral_PFOLink(const ElementLink< PFOContainer > &pfo)
add a neutral PFO to the tau
double ptIntermediateAxis() const
double etaTauEtaCalib() const
void addTrackLink(const ElementLink< TrackParticleContainer > &tr)
add a track to the tau
void addShot_PFOLink(const ElementLink< PFOContainer > &pfo)
add a shot PFO to the tau
double etaPanTauCellBasedProto() const
size_t nPi0_PFOs() const
Get the number of pi0 PFO particles associated with this tau.
virtual double e() const
The total energy of the particle.
Definition TauJet_v1.cxx:78
void clearEflowRec_Neutral_PFOLinks()
Remove all eflowRec_neutral PFOs from the tau.
void dump() const
double ptPanTauCellBased() const
void clearConversionTrackLinks()
Remove all tracks from the tau.
size_t nCellBased_Pi0_PFOs() const
Get the number of cellbased_pi0 PFO particles associated with this tau.
int trackFilterPass(unsigned int numTrack) const
void clearEflowRec_Pi0_PFOLinks()
Remove all eflowRec_pi0 PFOs from the tau.
void setDiscriminant(TauJetParameters::TauID discID, double disc)
Set value of discriminant.
void clearPi0_PFOLinks()
Remove all pi0 PFOs from the tau.
void addEflowRec_Charged_PFOLink(const ElementLink< PFOContainer > &pfo)
add a eflowRec_charged PFO to the tau
double ptDetectorAxis() const
size_t nWideTracks() const
Get the number of track particles associated with this tau.
void addOtherTrackLink(const ElementLink< TrackParticleContainer > &tr)
add a track to the tau
void setDetail(TauJetParameters::Detail detail, int value)
double mJetSeed() const
void clearTrackLinks()
Remove all tracks from the tau.
const TrackParticle * track(size_t i) const
Get the pointer to a given track associated with this tau.
void addCellBased_Neutral_PFOLink(const ElementLink< PFOContainer > &pfo)
add a cellbased_neutral PFO to the tau
const PFO * hadronic_PFO(size_t i) const
Get the pointer to a given hadronic PFO associated with this tau.
double mIntermediateAxis() const
double mTauEtaCalib() const
double ptPanTauCellBasedProto() const
virtual double m() const
The invariant mass of the particle.
double etaPanTauCellBased() const
size_t nNeutral_PFOs() const
Get the number of neutral PFO particles associated with this tau.
void clearCellBased_Neutral_PFOLinks()
Remove all cellbased_neutral PFOs from the tau.
void addWideTrackLink(const ElementLink< TrackParticleContainer > &tr)
add a track to the tau
size_t nHadronic_PFOs() const
Get the number of hadronic PFO particles associated with this tau.
void setFlag(TauJetParameters::VetoFlags flag, bool value)
Set veto flag.
std::vector< ElementLink< xAOD::TrackParticleContainer > > TrackParticleLinks_t
Definition TauJet_v1.h:228
double ptJetSeed() const
const Vertex * vertex() const
const PFO * eflowRec_Pi0_PFO(size_t i) const
Get the pointer to a given eflowRec_pi0 PFO associated with this tau.
ROOT::Math::LorentzVector< ROOT::Math::PtEtaPhiM4D< double > > GenVecFourMom_t
Base 4 Momentum type for taus.
Definition TauJet_v1.h:66
void clearShot_PFOLinks()
Remove all shot PFOs from the tau.
double etaDetectorAxis() const
ElementLink< xAOD::JetContainer > JetLink_t
Definition TauJet_v1.h:192
virtual double eta() const
The pseudorapidity ( ) of the particle.
void addCellBased_Charged_PFOLink(const ElementLink< PFOContainer > &pfo)
add a cellbased_charged PFO to the tau
TauCalibType
Enum for tau calib type.
Definition TauDefs.h:335
Detail
Enum for tau parameters - used mainly for backward compatibility with the analysis code.
Definition TauDefs.h:156
@ numTopoClusters
get number of topocluster constituents of jet associated to tau candidate
Definition TauDefs.h:173
PanTauDetails
Enum for tau details (scalar) calculated by pantau.
Definition TauDefs.h:355
VetoFlags
Enum for Veto flags.
Definition TauDefs.h:103
TauID
Enum for discriminants.
Definition TauDefs.h:46
IsTauFlag
Enum for IsTau flags.
Definition TauDefs.h:116
const SG::Accessor< int > * panTauDetailsAccessorV1< int >(xAOD::TauJetParameters::PanTauDetails detail)
const SG::Accessor< float > * detailsAccessorV1< float >(xAOD::TauJetParameters::Detail detail)
const SG::Accessor< float > * panTauDetailsAccessorV1< float >(xAOD::TauJetParameters::PanTauDetails detail)
const SG::Accessor< int > * detailsAccessorV1< int >(xAOD::TauJetParameters::Detail detail)
const SG::Accessor< float > * discriminantAccessorV1(xAOD::TauJetParameters::TauID discriminant)
Helper function for managing accessors to id input and output variables defined as enums in TauDefs....
ICaloAffectedTool is abstract interface for tools checking if 4 mom is in calo affected region.
Jet_v1 Jet
Definition of the current "jet version".
setStrategy setMatchFlag ElementLink< TrackParticleContainer >
static const SG::AuxElement::Accessor< Vertex_v1::TrackParticleLinks_t > trackAcc("trackParticleLinks")
Accessor for the track links.
setRcore setEtHad setFside pt
TrackParticle_v1 TrackParticle
Reference the current persistent version:
VertexContainer_v1 VertexContainer
Definition of the current "Vertex container version".
Vertex_v1 Vertex
Define the latest version of the vertex class.
setBGCode setTAP setLVL2ErrorBits bool
static const SG::AuxElement::Accessor< ElementLink< IParticleContainer > > acc("originalObjectLink")
Object used for setting/getting the dynamic decoration in question.
JetContainer_v1 JetContainer
Definition of the current "jet container version".
bool getValue(TauJetParameters::TauCalibType type, std::string &stringName)