20 {
21 if (
c1.second.empty() ||
c2.second.empty()) {
return c1.second.empty(); }
22
23 const TagBase&
t1 = *
c1.second.front();
24 const TagBase&
t2 = *
c2.second.front();
25
28 if (s1 && !s2) return true;
29 if (s2 && !s1) return false;
30
31
32
33 if (
t1.type() == xAOD::Muon::Combined) {
34
35 const CombinedFitTag* cbFitTag1 =
dynamic_cast<const CombinedFitTag*
>(&
t1);
36 if (cbFitTag1) {
37 const CombinedFitTag* cbFitTag2 =
dynamic_cast<const CombinedFitTag*
>(&
t2);
38 if (!cbFitTag2) return false;
39 return *cbFitTag1 < *cbFitTag2;
40 }
41 const StacoTag* stacoTag1 =
dynamic_cast<const StacoTag*
>(&
t1);
42 if (stacoTag1) {
43 const StacoTag* stacoTag2 =
dynamic_cast<const StacoTag*
>(&
t2);
44 if (!stacoTag2) return false;
45 return *stacoTag1 < *stacoTag2;
46 }
47 const MuGirlTag* muGirlTag1 =
dynamic_cast<const MuGirlTag*
>(&
t1);
48 if (muGirlTag1) {
49 const MuGirlTag* muGirlTag2 =
dynamic_cast<const MuGirlTag*
>(&
t2);
50 if (!muGirlTag2) return false;
51 return *muGirlTag1 < *muGirlTag2;
52 }
53 return false;
54 }
else if (
t1.type() == xAOD::Muon::SegmentTagged) {
55 const SegmentTag* segmentTag1 =
dynamic_cast<const SegmentTag*
>(&
t1);
56 if (segmentTag1) {
57 const SegmentTag* segmentTag2 =
dynamic_cast<const SegmentTag*
>(&
t2);
58 if (!segmentTag2) return false;
59 return *segmentTag1 < *segmentTag2;
60 }
61 const MuGirlTag* muGirlTag1 =
dynamic_cast<const MuGirlTag*
>(&
t1);
62 if (muGirlTag1) {
63 const MuGirlTag* muGirlTag2 =
dynamic_cast<const MuGirlTag*
>(&
t2);
64 if (!muGirlTag2) return false;
65 return *muGirlTag1 < *muGirlTag2;
66 }
67 return false;
68 }
else if (
t1.type() == xAOD::Muon::CaloTagged) {
70 if (caloTag1) {
72 if (!caloTag2) return false;
73 return *caloTag1 < *caloTag2;
74 }
75 return false;
76 }
77 return false;
78 }
std::vector< ALFA_RawDataContainer_p1 > t2
std::vector< ALFA_RawDataCollection_p1 > t1