@@ -70,6 +70,7 @@ struct JetSubstructureHFTask {
7070 Configurable<float > beta{" beta" , 0.0 , " soft drop beta" };
7171 Configurable<float > kappa{" kappa" , 1.0 , " angularity kappa" };
7272 Configurable<float > alpha{" alpha" , 1.0 , " angularity alpha" };
73+ Configurable<bool > doPairBkg{" doPairBkg" , true , " save bkg pairs" };
7374 Configurable<float > pairConstituentPtMin{" pairConstituentPtMin" , 1.0 , " pt cut off for constituents going into pairs" };
7475
7576 Service<o2::framework::O2DatabasePDG> pdg;
@@ -330,50 +331,51 @@ struct JetSubstructureHFTask {
330331 }
331332 }
332333 perpConeRho = (perpCone1Pt + perpCone2Pt) / (2 * M_PI * (jet.r () / 100.0 ) * (jet.r () / 100.0 )); // currently done per jet - could be better to do for leading jet if pushing to very low pT
333-
334- if (tracksVec.size () >= 1 && tracksPerpCone1Vec.size () >= 1 ) {
335- for (typename std::vector<typename U::iterator>::size_type track1Index = 0 ; track1Index < tracksVec.size (); track1Index++) {
336- for (typename std::vector<typename U::iterator>::size_type track2Index = 0 ; track2Index < tracksPerpCone1Vec.size (); track2Index++) {
337- pairJetPerpCone1PtVec.push_back (tracksVec.at (track1Index).pt () * tracksPerpCone1Vec.at (track2Index).pt ());
338- pairJetPerpCone1EnergyVec.push_back (2.0 * tracksVec.at (track1Index).energy () * tracksPerpCone1Vec.at (track2Index).energy ());
339- float dPhi = RecoDecay::constrainAngle (tracksVec.at (track1Index).phi () - (tracksPerpCone1Vec.at (track2Index).phi () - (M_PI / 2 .)), -M_PI);
340- float dEta = tracksVec.at (track1Index).eta () - tracksPerpCone1Vec.at (track2Index).eta ();
341- pairJetPerpCone1ThetaVec.push_back (std::sqrt (dEta * dEta + dPhi * dPhi));
334+ if (doPairBkg) {
335+ if (tracksVec.size () >= 1 && tracksPerpCone1Vec.size () >= 1 ) {
336+ for (typename std::vector<typename U::iterator>::size_type track1Index = 0 ; track1Index < tracksVec.size (); track1Index++) {
337+ for (typename std::vector<typename U::iterator>::size_type track2Index = 0 ; track2Index < tracksPerpCone1Vec.size (); track2Index++) {
338+ pairJetPerpCone1PtVec.push_back (tracksVec.at (track1Index).pt () * tracksPerpCone1Vec.at (track2Index).pt ());
339+ pairJetPerpCone1EnergyVec.push_back (2.0 * tracksVec.at (track1Index).energy () * tracksPerpCone1Vec.at (track2Index).energy ());
340+ float dPhi = RecoDecay::constrainAngle (tracksVec.at (track1Index).phi () - (tracksPerpCone1Vec.at (track2Index).phi () - (M_PI / 2 .)), -M_PI);
341+ float dEta = tracksVec.at (track1Index).eta () - tracksPerpCone1Vec.at (track2Index).eta ();
342+ pairJetPerpCone1ThetaVec.push_back (std::sqrt (dEta * dEta + dPhi * dPhi));
343+ }
342344 }
343345 }
344- }
345346
346- if (candidatesVec.size () >= 1 && tracksPerpCone1Vec.size () >= 1 ) {
347- for (typename std::vector<std::decay_t <typename V::iterator>>::size_type candidate1Index = 0 ; candidate1Index < candidatesVec.size (); candidate1Index++) {
348- for (typename std::vector<typename U::iterator>::size_type track2Index = 0 ; track2Index < tracksPerpCone1Vec.size (); track2Index++) {
349- pairJetPerpCone1PtVec.push_back (candidatesVec.at (candidate1Index).pt () * tracksPerpCone1Vec.at (track2Index).pt ());
350- auto candidate1Energy = std::sqrt ((candidatesVec.at (candidate1Index).p () * candidatesVec.at (candidate1Index).p ()) + (candMass * candMass));
351- pairJetPerpCone1EnergyVec.push_back (2.0 * candidate1Energy * tracksPerpCone1Vec.at (track2Index).energy ());
352- float dPhi = RecoDecay::constrainAngle (candidatesVec.at (candidate1Index).phi () - (tracksPerpCone1Vec.at (track2Index).phi () - (M_PI / 2 .)), -M_PI);
353- float dEta = candidatesVec.at (candidate1Index).eta () - tracksPerpCone1Vec.at (track2Index).eta ();
354- pairJetPerpCone1ThetaVec.push_back (std::sqrt (dEta * dEta + dPhi * dPhi));
347+ if (candidatesVec.size () >= 1 && tracksPerpCone1Vec.size () >= 1 ) {
348+ for (typename std::vector<std::decay_t <typename V::iterator>>::size_type candidate1Index = 0 ; candidate1Index < candidatesVec.size (); candidate1Index++) {
349+ for (typename std::vector<typename U::iterator>::size_type track2Index = 0 ; track2Index < tracksPerpCone1Vec.size (); track2Index++) {
350+ pairJetPerpCone1PtVec.push_back (candidatesVec.at (candidate1Index).pt () * tracksPerpCone1Vec.at (track2Index).pt ());
351+ auto candidate1Energy = std::sqrt ((candidatesVec.at (candidate1Index).p () * candidatesVec.at (candidate1Index).p ()) + (candMass * candMass));
352+ pairJetPerpCone1EnergyVec.push_back (2.0 * candidate1Energy * tracksPerpCone1Vec.at (track2Index).energy ());
353+ float dPhi = RecoDecay::constrainAngle (candidatesVec.at (candidate1Index).phi () - (tracksPerpCone1Vec.at (track2Index).phi () - (M_PI / 2 .)), -M_PI);
354+ float dEta = candidatesVec.at (candidate1Index).eta () - tracksPerpCone1Vec.at (track2Index).eta ();
355+ pairJetPerpCone1ThetaVec.push_back (std::sqrt (dEta * dEta + dPhi * dPhi));
356+ }
355357 }
356358 }
357- }
358359
359- if (tracksPerpCone1Vec.size () >= 1 ) {
360- for (typename std::vector<typename U::iterator>::size_type track1Index = 0 ; track1Index < tracksPerpCone1Vec.size (); track1Index++) {
361- for (typename std::vector<typename U::iterator>::size_type track2Index = track1Index + 1 ; track2Index < tracksPerpCone1Vec.size (); track2Index++) {
362- pairPerpCone1PerpCone1PtVec.push_back (tracksPerpCone1Vec.at (track1Index).pt () * tracksPerpCone1Vec.at (track2Index).pt ());
363- pairPerpCone1PerpCone1EnergyVec.push_back (2.0 * tracksPerpCone1Vec.at (track1Index).energy () * tracksPerpCone1Vec.at (track2Index).energy ());
364- pairPerpCone1PerpCone1ThetaVec.push_back (jetutilities::deltaR (tracksPerpCone1Vec.at (track1Index), tracksPerpCone1Vec.at (track2Index)));
360+ if (tracksPerpCone1Vec.size () >= 1 ) {
361+ for (typename std::vector<typename U::iterator>::size_type track1Index = 0 ; track1Index < tracksPerpCone1Vec.size (); track1Index++) {
362+ for (typename std::vector<typename U::iterator>::size_type track2Index = track1Index + 1 ; track2Index < tracksPerpCone1Vec.size (); track2Index++) {
363+ pairPerpCone1PerpCone1PtVec.push_back (tracksPerpCone1Vec.at (track1Index).pt () * tracksPerpCone1Vec.at (track2Index).pt ());
364+ pairPerpCone1PerpCone1EnergyVec.push_back (2.0 * tracksPerpCone1Vec.at (track1Index).energy () * tracksPerpCone1Vec.at (track2Index).energy ());
365+ pairPerpCone1PerpCone1ThetaVec.push_back (jetutilities::deltaR (tracksPerpCone1Vec.at (track1Index), tracksPerpCone1Vec.at (track2Index)));
366+ }
365367 }
366368 }
367- }
368369
369- if (tracksPerpCone1Vec.size () >= 1 && tracksPerpCone2Vec.size () >= 1 ) {
370- for (typename std::vector<typename U::iterator>::size_type track1Index = 0 ; track1Index < tracksPerpCone1Vec.size (); track1Index++) {
371- for (typename std::vector<typename U::iterator>::size_type track2Index = 0 ; track2Index < tracksPerpCone2Vec.size (); track2Index++) {
372- pairPerpCone1PerpCone2PtVec.push_back (tracksPerpCone1Vec.at (track1Index).pt () * tracksPerpCone2Vec.at (track2Index).pt ());
373- pairPerpCone1PerpCone2EnergyVec.push_back (2.0 * tracksPerpCone1Vec.at (track1Index).energy () * tracksPerpCone2Vec.at (track2Index).energy ());
374- float dPhi = RecoDecay::constrainAngle ((tracksPerpCone1Vec.at (track1Index).phi () - (M_PI / 2 .)) - (tracksPerpCone2Vec.at (track2Index).phi () + (M_PI / 2 .)), -M_PI);
375- float dEta = tracksPerpCone1Vec.at (track1Index).eta () - tracksPerpCone2Vec.at (track2Index).eta ();
376- pairPerpCone1PerpCone2ThetaVec.push_back (std::sqrt (dEta * dEta + dPhi * dPhi));
370+ if (tracksPerpCone1Vec.size () >= 1 && tracksPerpCone2Vec.size () >= 1 ) {
371+ for (typename std::vector<typename U::iterator>::size_type track1Index = 0 ; track1Index < tracksPerpCone1Vec.size (); track1Index++) {
372+ for (typename std::vector<typename U::iterator>::size_type track2Index = 0 ; track2Index < tracksPerpCone2Vec.size (); track2Index++) {
373+ pairPerpCone1PerpCone2PtVec.push_back (tracksPerpCone1Vec.at (track1Index).pt () * tracksPerpCone2Vec.at (track2Index).pt ());
374+ pairPerpCone1PerpCone2EnergyVec.push_back (2.0 * tracksPerpCone1Vec.at (track1Index).energy () * tracksPerpCone2Vec.at (track2Index).energy ());
375+ float dPhi = RecoDecay::constrainAngle ((tracksPerpCone1Vec.at (track1Index).phi () - (M_PI / 2 .)) - (tracksPerpCone2Vec.at (track2Index).phi () + (M_PI / 2 .)), -M_PI);
376+ float dEta = tracksPerpCone1Vec.at (track1Index).eta () - tracksPerpCone2Vec.at (track2Index).eta ();
377+ pairPerpCone1PerpCone2ThetaVec.push_back (std::sqrt (dEta * dEta + dPhi * dPhi));
378+ }
377379 }
378380 }
379381 }
0 commit comments