21 virtual void AddInputVectors(
const std::vector<fastjet::PseudoJet>& vecs,
Int_t offsetIndex = -99999);
23 virtual const char *
ClassName()
const {
return "AliFJWrapper"; }
55 #ifdef FASTJET_VERSION
56 const std::vector<fastjet::contrib::GenericSubtractorInfo> GetGenSubtractorInfoJetMass()
const {
return fGenSubtractorInfoJetMass ; }
57 const std::vector<fastjet::contrib::GenericSubtractorInfo> GetGenSubtractorInfoJetAngularity()
const {
return fGenSubtractorInfoJetAngularity ; }
58 const std::vector<fastjet::contrib::GenericSubtractorInfo> GetGenSubtractorInfoJetpTD()
const {
return fGenSubtractorInfoJetpTD ; }
59 const std::vector<fastjet::contrib::GenericSubtractorInfo> GetGenSubtractorInfoJetCircularity()
const {
return fGenSubtractorInfoJetCircularity ; }
60 const std::vector<fastjet::contrib::GenericSubtractorInfo> GetGenSubtractorInfoJetSigma2()
const {
return fGenSubtractorInfoJetSigma2 ; }
61 const std::vector<fastjet::contrib::GenericSubtractorInfo> GetGenSubtractorInfoJetConstituent()
const {
return fGenSubtractorInfoJetConstituent ; }
62 const std::vector<fastjet::contrib::GenericSubtractorInfo> GetGenSubtractorInfoJetLeSub()
const {
return fGenSubtractorInfoJetLeSub ; }
63 const std::vector<fastjet::contrib::GenericSubtractorInfo> GetGenSubtractorInfoJet1subjettiness_kt()
const {
return fGenSubtractorInfoJet1subjettiness_kt ; }
64 const std::vector<fastjet::contrib::GenericSubtractorInfo> GetGenSubtractorInfoJet2subjettiness_kt()
const {
return fGenSubtractorInfoJet2subjettiness_kt ; }
65 const std::vector<fastjet::contrib::GenericSubtractorInfo> GetGenSubtractorInfoJet3subjettiness_kt()
const {
return fGenSubtractorInfoJet3subjettiness_kt ; }
66 const std::vector<fastjet::contrib::GenericSubtractorInfo> GetGenSubtractorInfoJetOpeningAngle_kt()
const {
return fGenSubtractorInfoJetOpeningAngle_kt ; }
67 const std::vector<fastjet::PseudoJet> GetConstituentSubtrJets()
const {
return fConstituentSubtrJets ; }
68 const std::vector<fastjet::PseudoJet> GetGroomedJets()
const {
return fGroomedJets ; }
70 Int_t CreateConstituentSub();
71 Int_t CreateEventConstituentSub();
72 Int_t CreateSoftDrop();
145 #ifndef FASTJET_VERSION
148 fastjet::Selector *
fRange;
177 #ifdef FASTJET_VERSION
178 fastjet::JetMedianBackgroundEstimator *fBkrdEstimator;
180 fastjet::contrib::GenericSubtractor *fGenSubtractor;
181 fastjet::contrib::ConstituentSubtractor *fConstituentSubtractor;
182 fastjet::contrib::ConstituentSubtractor *fEventConstituentSubtractor;
183 fastjet::contrib::SoftDrop *fSoftDrop;
184 std::vector<fastjet::contrib::GenericSubtractorInfo> fGenSubtractorInfoJetMass;
185 std::vector<fastjet::contrib::GenericSubtractorInfo> fGenSubtractorInfoGRNum;
186 std::vector<fastjet::contrib::GenericSubtractorInfo> fGenSubtractorInfoGRDen;
187 std::vector<fastjet::contrib::GenericSubtractorInfo> fGenSubtractorInfoJetAngularity;
188 std::vector<fastjet::contrib::GenericSubtractorInfo> fGenSubtractorInfoJetpTD;
189 std::vector<fastjet::contrib::GenericSubtractorInfo> fGenSubtractorInfoJetCircularity;
190 std::vector<fastjet::contrib::GenericSubtractorInfo> fGenSubtractorInfoJetSigma2;
191 std::vector<fastjet::contrib::GenericSubtractorInfo> fGenSubtractorInfoJetConstituent;
192 std::vector<fastjet::contrib::GenericSubtractorInfo> fGenSubtractorInfoJetLeSub;
193 std::vector<fastjet::contrib::GenericSubtractorInfo> fGenSubtractorInfoJet1subjettiness_kt;
194 std::vector<fastjet::contrib::GenericSubtractorInfo> fGenSubtractorInfoJet2subjettiness_kt;
195 std::vector<fastjet::contrib::GenericSubtractorInfo> fGenSubtractorInfoJet3subjettiness_kt;
196 std::vector<fastjet::contrib::GenericSubtractorInfo> fGenSubtractorInfoJetOpeningAngle_kt;
220 #ifdef AliFJWrapper_CXX
221 #undef AliFJWrapper_CXX
224 #pragma GCC system_header
227 namespace fj = fastjet;
235 , fEventSubInputVectors ( )
236 , fEventSubCorrectedVectors ( )
241 , fSubtractedJetsPt ( )
242 , fConstituentSubtrJets ( )
246 , fGhostedAreaSpec (0)
253 , fClustSeqActGhosts (0)
254 , fStrategy (fj::Best)
255 , fAlgor (fj::kt_algorithm)
256 , fScheme (fj::BIpt_scheme)
257 , fAreaType (fj::active_area)
264 , fMeanGhostKt (1e-100)
266 , fMedUsedForBgSub (0)
267 , fUseArea4Vector (kFALSE)
271 , fUseMaxDelR (kFALSE)
273 #ifdef FASTJET_VERSION
276 , fConstituentSubtractor (0)
277 , fEventConstituentSubtractor (0)
278 , fGenSubtractorInfoJetMass ( )
279 , fGenSubtractorInfoGRNum ( )
280 , fGenSubtractorInfoGRDen ( )
281 , fGenSubtractorInfoJetAngularity ( )
282 , fGenSubtractorInfoJetpTD ( )
283 , fGenSubtractorInfoJetCircularity( )
284 , fGenSubtractorInfoJetSigma2()
285 , fGenSubtractorInfoJetConstituent ( )
286 , fGenSubtractorInfoJetLeSub ( )
287 , fGenSubtractorInfoJet1subjettiness_kt ( )
288 , fGenSubtractorInfoJet2subjettiness_kt ( )
289 , fGenSubtractorInfoJet3subjettiness_kt ( )
290 , fGenSubtractorInfoJetOpeningAngle_kt ( )
292 , fDoFilterArea (false)
293 , fLegacyMode (false)
294 , fUseExternalBkg (false)
302 , fGRDenominatorSub()
328 #ifdef FASTJET_VERSION
329 if (fBkrdEstimator) {
delete fBkrdEstimator; fBkrdEstimator = NULL; }
330 if (fGenSubtractor) {
delete fGenSubtractor; fGenSubtractor = NULL; }
331 if (fConstituentSubtractor) {
delete fConstituentSubtractor; fConstituentSubtractor = NULL; }
332 if (fSoftDrop) {
delete fSoftDrop; fSoftDrop = NULL;}
394 fastjet::PseudoJet inVec(px, py, pz, E);
398 inVec.set_user_index(index);
414 fj::PseudoJet inVec = vec;
418 inVec.set_user_index(index);
433 for (
UInt_t i = 0; i < vecs.size(); ++i) {
434 fj::PseudoJet inVec = vecs[i];
435 if (offsetIndex > -99999)
457 fastjet::PseudoJet inVec(px, py, pz, E);
459 if (index > -99999) {
460 inVec.set_user_index(index);
479 AliError(Form(
"[e] ::GetJetArea wrong index: %d",idx));
493 AliError(Form(
"[e] ::GetJetArea wrong index: %d",idx));
506 AliError(Form(
"[e] ::GetFilteredJetArea wrong index: %d",idx));
515 fastjet::PseudoJet retval;
519 AliError(Form(
"[e] ::GetJetArea wrong index: %d",idx));
528 fastjet::PseudoJet retval;
532 AliError(Form(
"[e] ::GetJetArea wrong index: %d",idx));
541 fastjet::PseudoJet retval;
545 AliError(Form(
"[e] ::GetFilteredJetArea wrong index: %d",idx));
557 if (kTRUE == sorted) {
576 std::vector<fastjet::PseudoJet>
581 std::vector<fastjet::PseudoJet> retval;
586 AliError(Form(
"[e] ::GetJetConstituents wrong index: %d",idx));
593 std::vector<fastjet::PseudoJet>
598 std::vector<fastjet::PseudoJet> retval;
603 AliError(Form(
"[e] ::GetJetConstituents wrong index: %d",idx));
610 std::vector<fastjet::PseudoJet>
615 std::vector<fastjet::PseudoJet> retval;
621 AliError(Form(
"[e] ::GetFilteredJetConstituents wrong index: %d",idx));
634 AliError(
"[e] Run the jfinder first.");
643 std::vector<fastjet::PseudoJet> input_jets = sorted_by_pt(
fClustSeq->inclusive_jets());
644 input_jets.erase(input_jets.begin(), input_jets.begin() +
remove);
648 }
catch (fj::Error) {
649 AliError(
" [w] FJ Exception caught.");
677 #ifndef FASTJET_VERSION
683 if (
fAlgor == fj::plugin_algorithm) {
703 AliError(
"[e] Unrecognized plugin number!");
715 }
catch (fj::Error) {
716 AliError(
" [w] FJ Exception caught.");
721 #ifdef FASTJET_VERSION
722 fBkrdEstimator =
new fj::JetMedianBackgroundEstimator(fj::SelectorAbsRapMax(
fMaxRap));
752 }
catch (fj::Error) {
753 AliError(
" [w] FJ Exception caught.");
765 }
catch (fj::Error) {
766 AliError(
" [w] FJ Exception caught.");
781 #ifdef FASTJET_VERSION
782 std::cout <<
"WARNING! Setting FastJet in legacy mode" << std::endl;
784 if (fBkrdEstimator) {
785 fBkrdEstimator->set_provide_fj2_sigma(kTRUE);
786 fBkrdEstimator->set_use_area_4vector(kFALSE);
813 AliError(
" [w] FJ Exception caught.");
823 if (0.0 == median_pt) {
852 #ifdef FASTJET_VERSION
856 AliJetShapeMass shapeMass;
859 fGenSubtractorInfoJetMass.clear();
861 fj::contrib::GenericSubtractorInfo info;
863 double subtracted_shape = (*fGenSubtractor)(shapeMass,
fInclusiveJets[i], info);
864 fGenSubtractorInfoJetMass.push_back(info);
873 #ifdef FASTJET_VERSION
885 AliJetShapeGRNum shapeGRNum(r,
fDRStep);
886 AliJetShapeGRDen shapeGRDen(r,
fDRStep);
889 fGenSubtractorInfoGRNum.clear();
890 fGenSubtractorInfoGRDen.clear();
891 fj::contrib::GenericSubtractorInfo infoNum;
892 fj::contrib::GenericSubtractorInfo infoDen;
894 double sub_num = (*fGenSubtractor)(shapeGRNum,
fInclusiveJets[ijet], infoNum);
895 double sub_den = (*fGenSubtractor)(shapeGRDen, fInclusiveJets[ijet], infoDen);
897 fGenSubtractorInfoGRNum.push_back(infoNum);
898 fGenSubtractorInfoGRDen.push_back(infoDen);
910 #ifdef FASTJET_VERSION
914 AliJetShapeAngularity shapeAngularity;
917 fGenSubtractorInfoJetAngularity.clear();
919 fj::contrib::GenericSubtractorInfo infoAng;
921 double subtracted_shape = (*fGenSubtractor)(shapeAngularity,
fInclusiveJets[i], infoAng);
922 fGenSubtractorInfoJetAngularity.push_back(infoAng);
930 #ifdef FASTJET_VERSION
934 AliJetShapepTD shapepTD;
937 fGenSubtractorInfoJetpTD.clear();
939 fj::contrib::GenericSubtractorInfo infopTD;
941 double subtracted_shape = (*fGenSubtractor)(shapepTD,
fInclusiveJets[i], infopTD);
942 fGenSubtractorInfoJetpTD.push_back(infopTD);
950 #ifdef FASTJET_VERSION
954 AliJetShapeCircularity shapecircularity;
957 fGenSubtractorInfoJetCircularity.clear();
959 fj::contrib::GenericSubtractorInfo infoCirc;
961 double subtracted_shape = (*fGenSubtractor)(shapecircularity,
fInclusiveJets[i], infoCirc);
962 fGenSubtractorInfoJetCircularity.push_back(infoCirc);
970 #ifdef FASTJET_VERSION
974 AliJetShapeSigma2 shapesigma2;
977 fGenSubtractorInfoJetSigma2.clear();
979 fj::contrib::GenericSubtractorInfo infoSigma;
981 double subtracted_shape = (*fGenSubtractor)(shapesigma2,
fInclusiveJets[i], infoSigma);
982 fGenSubtractorInfoJetSigma2.push_back(infoSigma);
990 #ifdef FASTJET_VERSION
994 AliJetShapeConstituent shapeconst;
997 fGenSubtractorInfoJetConstituent.clear();
999 fj::contrib::GenericSubtractorInfo infoConst;
1001 double subtracted_shape = (*fGenSubtractor)(shapeconst,
fInclusiveJets[i], infoConst);
1002 fGenSubtractorInfoJetConstituent.push_back(infoConst);
1011 #ifdef FASTJET_VERSION
1015 AliJetShapeLeSub shapeLeSub;
1018 fGenSubtractorInfoJetLeSub.clear();
1020 fj::contrib::GenericSubtractorInfo infoLeSub;
1022 double subtracted_shape = (*fGenSubtractor)(shapeLeSub,
fInclusiveJets[i], infoLeSub);
1023 fGenSubtractorInfoJetLeSub.push_back(infoLeSub);
1032 #ifdef FASTJET_VERSION
1036 AliJetShape1subjettiness_kt shape1subjettiness_kt;
1039 fGenSubtractorInfoJet1subjettiness_kt.clear();
1041 fj::contrib::GenericSubtractorInfo info1subjettiness_kt;
1043 double subtracted_shape = (*fGenSubtractor)(shape1subjettiness_kt,
fInclusiveJets[i], info1subjettiness_kt);
1044 fGenSubtractorInfoJet1subjettiness_kt.push_back(info1subjettiness_kt);
1053 #ifdef FASTJET_VERSION
1057 AliJetShape2subjettiness_kt shape2subjettiness_kt;
1060 fGenSubtractorInfoJet2subjettiness_kt.clear();
1062 fj::contrib::GenericSubtractorInfo info2subjettiness_kt;
1064 double subtracted_shape = (*fGenSubtractor)(shape2subjettiness_kt,
fInclusiveJets[i], info2subjettiness_kt);
1065 fGenSubtractorInfoJet2subjettiness_kt.push_back(info2subjettiness_kt);
1074 #ifdef FASTJET_VERSION
1078 AliJetShape3subjettiness_kt shape3subjettiness_kt;
1081 fGenSubtractorInfoJet3subjettiness_kt.clear();
1083 fj::contrib::GenericSubtractorInfo info3subjettiness_kt;
1085 double subtracted_shape = (*fGenSubtractor)(shape3subjettiness_kt,
fInclusiveJets[i], info3subjettiness_kt);
1086 fGenSubtractorInfoJet3subjettiness_kt.push_back(info3subjettiness_kt);
1095 #ifdef FASTJET_VERSION
1099 AliJetShapeOpeningAngle_kt shapeOpeningAngle_kt;
1102 fGenSubtractorInfoJetOpeningAngle_kt.clear();
1104 fj::contrib::GenericSubtractorInfo infoOpeningAngle_kt;
1106 double subtracted_shape = (*fGenSubtractor)(shapeOpeningAngle_kt,
fInclusiveJets[i], infoOpeningAngle_kt);
1107 fGenSubtractorInfoJetOpeningAngle_kt.push_back(infoOpeningAngle_kt);
1116 #ifdef FASTJET_VERSION
1117 CreateConstituentSub();
1124 fj::PseudoJet subtracted_jet(0.,0.,0.,0.);
1129 if(fConstituentSubtractor) {
delete fConstituentSubtractor; fConstituentSubtractor = NULL; }
1138 #ifdef FASTJET_VERSION
1139 CreateEventConstituentSub();
1143 if(fEventConstituentSubtractor) {
delete fEventConstituentSubtractor; fEventConstituentSubtractor = NULL; }
1152 #ifdef FASTJET_VERSION
1162 fj::PseudoJet groomed_jet(0.,0.,0.,0.);
1165 groomed_jet.set_user_index(i);
1166 if(groomed_jet!=0)
fGroomedJets.push_back(groomed_jet);
1170 if(fSoftDrop) {
delete fSoftDrop; fSoftDrop = NULL; }
1177 Int_t AliFJWrapper::CreateSoftDrop() {
1179 #ifdef FASTJET_VERSION
1180 if (fSoftDrop) {
delete fSoftDrop; }
1182 fSoftDrop =
new fj::contrib::SoftDrop(
fBeta,
fZcut);
1183 fSoftDrop->set_verbose_structure(kTRUE);
1191 Int_t AliFJWrapper::CreateGenSub() {
1193 #ifdef FASTJET_VERSION
1194 if (fGenSubtractor) {
delete fGenSubtractor; }
1197 { fGenSubtractor =
new fj::contrib::GenericSubtractor(
fRho,
fRhom); }
1200 fGenSubtractor =
new fj::contrib::GenericSubtractor(fBkrdEstimator);
1201 #if FASTJET_VERSION_NUMBER >= 30100
1202 fGenSubtractor->set_common_bge_for_rho_and_rhom();
1211 Int_t AliFJWrapper::CreateConstituentSub() {
1213 #ifdef FASTJET_VERSION
1214 if (fConstituentSubtractor) {
delete fConstituentSubtractor; }
1219 else { fConstituentSubtractor =
new fj::contrib::ConstituentSubtractor(fBkrdEstimator); }
1226 Int_t AliFJWrapper::CreateEventConstituentSub() {
1228 #ifdef FASTJET_VERSION
1229 if (fEventConstituentSubtractor) {
delete fEventConstituentSubtractor; }
1233 else fEventConstituentSubtractor =
new fj::contrib::ConstituentSubtractor(fBkrdEstimator);
1244 std::string opt(option);
1246 if (!opt.compare(
"kt"))
fAlgor = fj::kt_algorithm;
1247 if (!opt.compare(
"antikt"))
fAlgor = fj::antikt_algorithm;
1248 if (!opt.compare(
"cambridge"))
fAlgor = fj::cambridge_algorithm;
1249 if (!opt.compare(
"genkt"))
fAlgor = fj::genkt_algorithm;
1250 if (!opt.compare(
"cambridge_passive"))
fAlgor = fj::cambridge_for_passive_algorithm;
1251 if (!opt.compare(
"genkt_passive"))
fAlgor = fj::genkt_for_passive_algorithm;
1252 if (!opt.compare(
"ee_kt"))
fAlgor = fj::ee_kt_algorithm;
1253 if (!opt.compare(
"ee_genkt"))
fAlgor = fj::ee_genkt_algorithm;
1254 if (!opt.compare(
"plugin"))
fAlgor = fj::plugin_algorithm;
1262 std::string opt(option);
1264 if (!opt.compare(
"active"))
fAreaType = fj::active_area;
1265 if (!opt.compare(
"invalid"))
fAreaType = fj::invalid_area;
1266 if (!opt.compare(
"active_area_explicit_ghosts"))
fAreaType = fj::active_area_explicit_ghosts;
1267 if (!opt.compare(
"one_ghost_passive"))
fAreaType = fj::one_ghost_passive_area;
1268 if (!opt.compare(
"passive"))
fAreaType = fj::passive_area;
1269 if (!opt.compare(
"voronoi"))
fAreaType = fj::voronoi_area;
1279 std::string opt(option);
1281 if (!opt.compare(
"BIpt"))
fScheme = fj::BIpt_scheme;
1282 if (!opt.compare(
"BIpt2"))
fScheme = fj::BIpt2_scheme;
1283 if (!opt.compare(
"E"))
fScheme = fj::E_scheme;
1284 if (!opt.compare(
"pt"))
fScheme = fj::pt_scheme;
1285 if (!opt.compare(
"pt2"))
fScheme = fj::pt2_scheme;
1286 if (!opt.compare(
"Et"))
fScheme = fj::Et_scheme;
1287 if (!opt.compare(
"Et2"))
fScheme = fj::Et2_scheme;
1295 std::string opt(option);
1297 if (!opt.compare(
"Best"))
fStrategy = fj::Best;
1298 if (!opt.compare(
"N2MinHeapTiled"))
fStrategy = fj::N2MinHeapTiled;
1299 if (!opt.compare(
"N2Tiled"))
fStrategy = fj::N2Tiled;
1300 if (!opt.compare(
"N2PoorTiled"))
fStrategy = fj::N2PoorTiled;
1301 if (!opt.compare(
"N2Plain"))
fStrategy = fj::N2Plain;
1302 if (!opt.compare(
"N3Dumb"))
fStrategy = fj::N3Dumb;
1303 if (!opt.compare(
"NlnN"))
fStrategy = fj::NlnN;
1304 if (!opt.compare(
"NlnN3pi"))
fStrategy = fj::NlnN3pi;
1305 if (!opt.compare(
"NlnN4pi"))
fStrategy = fj::NlnN4pi;
1306 if (!opt.compare(
"NlnNCam4pi"))
fStrategy = fj::NlnNCam4pi;
1307 if (!opt.compare(
"NlnNCam2pi2R"))
fStrategy = fj::NlnNCam2pi2R;
1308 if (!opt.compare(
"NlnNCam"))
fStrategy = fj::NlnNCam;
1309 if (!opt.compare(
"plugin"))
fStrategy = fj::plugin_strategy;
1322 }
catch (fj::Error) {
1323 AliError(
" [w] FJ Exception caught.");
1330 std::vector<fastjet::PseudoJet> SubJet_Axes;
1331 fj::PseudoJet SubJet1_Axis;
1332 fj::PseudoJet SubJet2_Axis;
1333 std::vector<fastjet::PseudoJet> SubJets;
1334 fj::PseudoJet SubJet1;
1335 fj::PseudoJet SubJet2;
1340 fj::contrib::Nsubjettiness nSub(N, fj::contrib::KT_Axes(), fj::contrib::NormalizedMeasure(Beta,
fR));
1342 SubJet_Axes=nSub.currentAxes();
1343 SubJets=nSub.currentSubjets();
1345 else if (Measure==1){
1346 fj::contrib::Nsubjettiness nSub(N, fj::contrib::KT_Axes(), fj::contrib::UnnormalizedMeasure(Beta));
1348 SubJet_Axes=nSub.currentAxes();
1349 SubJets=nSub.currentSubjets();
1352 else if (Algorithm==1) {
1353 fj::contrib::Nsubjettiness nSub(N, fj::contrib::CA_Axes(), fj::contrib::NormalizedMeasure(Beta,
fR));
1355 SubJet_Axes=nSub.currentAxes();
1356 SubJets=nSub.currentSubjets();
1358 else if (Algorithm==2){
1359 fj::contrib::Nsubjettiness nSub(N, fj::contrib::AntiKT_Axes(Radius), fj::contrib::NormalizedMeasure(Beta,
fR));
1361 SubJet_Axes=nSub.currentAxes();
1362 SubJets=nSub.currentSubjets();
1364 else if (Algorithm==3) {
1365 fj::contrib::Nsubjettiness nSub(N, fj::contrib::WTA_KT_Axes(), fj::contrib::NormalizedMeasure(Beta,
fR));
1367 SubJet_Axes=nSub.currentAxes();
1368 SubJets=nSub.currentSubjets();
1370 else if (Algorithm==4) {
1371 fj::contrib::Nsubjettiness nSub(N, fj::contrib::WTA_CA_Axes(), fj::contrib::NormalizedMeasure(Beta,
fR));
1373 SubJet_Axes=nSub.currentAxes();
1374 SubJets=nSub.currentSubjets();
1376 else if (Algorithm==5){
1377 fj::contrib::Nsubjettiness nSub(N, fj::contrib::OnePass_KT_Axes(), fj::contrib::NormalizedMeasure(Beta,
fR));
1379 SubJet_Axes=nSub.currentAxes();
1380 SubJets=nSub.currentSubjets();
1382 else if (Algorithm==6){
1383 fj::contrib::Nsubjettiness nSub(N, fj::contrib::OnePass_CA_Axes(), fj::contrib::NormalizedMeasure(Beta,
fR));
1385 SubJet_Axes=nSub.currentAxes();
1386 SubJets=nSub.currentSubjets();
1388 else if (Algorithm==7){
1389 fj::contrib::Nsubjettiness nSub(N, fj::contrib::OnePass_AntiKT_Axes(Radius), fj::contrib::NormalizedMeasure(Beta,
fR));
1391 SubJet_Axes=nSub.currentAxes();
1392 SubJets=nSub.currentSubjets();
1394 else if (Algorithm==8){
1395 fj::contrib::Nsubjettiness nSub(N, fj::contrib::OnePass_WTA_KT_Axes(), fj::contrib::NormalizedMeasure(Beta,
fR));
1397 SubJet_Axes=nSub.currentAxes();
1398 SubJets=nSub.currentSubjets();
1400 else if (Algorithm==9){
1401 fj::contrib::Nsubjettiness nSub(N, fj::contrib::OnePass_WTA_CA_Axes(), fj::contrib::NormalizedMeasure(Beta,
fR));
1403 SubJet_Axes=nSub.currentAxes();
1404 SubJets=nSub.currentSubjets();
1406 else if (Algorithm==10){
1407 fj::contrib::Nsubjettiness nSub(N, fj::contrib::MultiPass_Axes(100), fj::contrib::NormalizedMeasure(Beta,
fR));
1409 SubJet_Axes=nSub.currentAxes();
1410 SubJets=nSub.currentSubjets();
1415 SubJet1_Axis=SubJet_Axes[0];
1416 Double_t SubJet1_Eta=SubJet1_Axis.pseudorapidity();
1418 Double_t SubJet1_Phi=SubJet1_Axis.phi();
1419 if(SubJet1_Phi < -1*TMath::Pi()) SubJet1_Phi += (2*TMath::Pi());
1420 else if (SubJet1_Phi > TMath::Pi()) SubJet1_Phi -= (2*TMath::Pi());
1423 if (SubJet_Axes.size()>1){
1424 SubJet2_Axis=SubJet_Axes[1];
1425 SubJet2_Eta=SubJet2_Axis.pseudorapidity();
1426 SubJet2_Phi=SubJet2_Axis.phi();
1427 if(SubJet2_Phi < -1*TMath::Pi()) SubJet2_Phi += (2*TMath::Pi());
1428 else if (SubJet2_Phi > TMath::Pi()) SubJet2_Phi -= (2*TMath::Pi());
1429 DeltaPhi=SubJet1_Phi-SubJet2_Phi;
1430 if(DeltaPhi < -1*TMath::Pi()) DeltaPhi += (2*TMath::Pi());
1431 else if (DeltaPhi > TMath::Pi()) DeltaPhi -= (2*TMath::Pi());
1436 Double_t SubJet1Eta=SubJet1.pseudorapidity();
1439 if(SubJet1Phi < -1*TMath::Pi()) SubJet1Phi += (2*TMath::Pi());
1440 else if (SubJet1Phi > TMath::Pi()) SubJet1Phi -= (2*TMath::Pi());
1443 Double_t SubJet1LeadingTrackPt=-3.0;
1444 Double_t SubJet2LeadingTrackPt=-3.0;
1445 std::vector<fj::PseudoJet> SubJet1Tracks = SubJet1.constituents();
1446 for (
Int_t i=0; i<SubJet1Tracks.size(); i++){
1447 if (SubJet1Tracks[i].perp() > SubJet1LeadingTrackPt) SubJet1LeadingTrackPt=SubJet1Tracks[i].perp();
1449 if (SubJet_Axes.size()>1){
1451 SubJet2Eta=SubJet2.pseudorapidity();
1452 SubJet2Phi=SubJet2.phi();
1453 if(SubJet2Phi < -1*TMath::Pi()) SubJet2Phi += (2*TMath::Pi());
1454 else if (SubJet2Phi > TMath::Pi()) SubJet2Phi -= (2*TMath::Pi());
1455 DeltaPhiSubJets=SubJet1Phi-SubJet2Phi;
1456 if(DeltaPhiSubJets < -1*TMath::Pi()) DeltaPhiSubJets += (2*TMath::Pi());
1457 else if (DeltaPhiSubJets > TMath::Pi()) DeltaPhiSubJets -= (2*TMath::Pi());
1458 std::vector<fj::PseudoJet> SubJet2Tracks = SubJet2.constituents();
1459 for (
Int_t i=0; i<SubJet2Tracks.size(); i++){
1460 if (SubJet2Tracks[i].perp() > SubJet2LeadingTrackPt) SubJet2LeadingTrackPt=SubJet2Tracks[i].perp();
1467 fj::contrib::SoftDrop Soft_Drop(Beta_SD,ZCut);
1468 Soft_Drop.set_tagging_mode();
1470 if (Soft_Dropped_Jet==0) Result_SoftDrop=-1;
1472 if (Option==3) Result_SoftDrop=Soft_Dropped_Jet.structure_of<fj::contrib::SoftDrop>().delta_R();
1473 if (Option==4) Result_SoftDrop=Soft_Dropped_Jet.structure_of<fj::contrib::SoftDrop>().symmetry();
1477 if (Option==0)
return Result;
1478 else if (Option==1 && SubJet_Axes.size()>1 && N==2)
return TMath::Sqrt(TMath::Power(SubJet1_Eta-SubJet2_Eta,2)+TMath::Power(DeltaPhi,2));
1479 else if (Option==2 && SubJet_Axes.size()>1 && N==2)
return TMath::Sqrt(TMath::Power(SubJet1_Eta-SubJet2_Eta,2)+TMath::Power(DeltaPhi,2));
1480 else if ((Option==3 || Option==4) && N==2)
return Result_SoftDrop;
1481 else if (Option==5 && SubJets.size()>1 && N==2)
return SubJet1.perp();
1482 else if (Option==6 && SubJets.size()>1 && N==2)
return SubJet2.perp();
1483 else if (Option==7 && SubJets.size()>1 && N==2)
return TMath::Sqrt(TMath::Power(SubJet1Eta-SubJet2Eta,2)+TMath::Power(DeltaPhiSubJets,2));
1484 else if (Option==8 && SubJets.size()>1 && N==2)
return SubJet1LeadingTrackPt;
1485 else if (Option==9 && SubJets.size()>1 && N==2)
return SubJet2LeadingTrackPt;
1494 std::vector<fastjet::PseudoJet> SubJet_Axes;
1495 fj::PseudoJet SubJet1_Axis;
1496 fj::PseudoJet SubJet2_Axis;
1498 fj::contrib::Nsubjettiness nSub(N, fj::contrib::KT_Axes(), fj::contrib::NormalizedMeasure(Beta,JetR));
1499 Result= nSub.result(jet);
1500 SubJet_Axes=nSub.currentAxes();
1502 else if (Algorithm==1) {
1503 fj::contrib::Nsubjettiness nSub(N, fj::contrib::CA_Axes(), fj::contrib::NormalizedMeasure(Beta,JetR));
1504 Result= nSub.result(jet);
1505 SubJet_Axes=nSub.currentAxes();
1507 else if (Algorithm==2){
1508 fj::contrib::Nsubjettiness nSub(N, fj::contrib::AntiKT_Axes(Radius), fj::contrib::NormalizedMeasure(Beta,JetR));
1509 Result= nSub.result(jet);
1510 SubJet_Axes=nSub.currentAxes();
1512 else if (Algorithm==3) {
1513 fj::contrib::Nsubjettiness nSub(N, fj::contrib::WTA_KT_Axes(), fj::contrib::NormalizedMeasure(Beta,JetR));
1514 Result= nSub.result(jet);
1515 SubJet_Axes=nSub.currentAxes();
1517 else if (Algorithm==4) {
1518 fj::contrib::Nsubjettiness nSub(N, fj::contrib::WTA_CA_Axes(), fj::contrib::NormalizedMeasure(Beta,JetR));
1519 Result= nSub.result(jet);
1520 SubJet_Axes=nSub.currentAxes();
1522 else if (Algorithm==5){
1523 fj::contrib::Nsubjettiness nSub(N, fj::contrib::OnePass_KT_Axes(), fj::contrib::NormalizedMeasure(Beta,JetR));
1524 Result= nSub.result(jet);
1525 SubJet_Axes=nSub.currentAxes();
1527 else if (Algorithm==6){
1528 fj::contrib::Nsubjettiness nSub(N, fj::contrib::OnePass_CA_Axes(), fj::contrib::NormalizedMeasure(Beta,JetR));
1529 Result= nSub.result(jet);
1530 SubJet_Axes=nSub.currentAxes();
1532 else if (Algorithm==7){
1533 fj::contrib::Nsubjettiness nSub(N, fj::contrib::OnePass_AntiKT_Axes(Radius), fj::contrib::NormalizedMeasure(Beta,JetR));
1534 Result= nSub.result(jet);
1535 SubJet_Axes=nSub.currentAxes();
1537 else if (Algorithm==8){
1538 fj::contrib::Nsubjettiness nSub(N, fj::contrib::OnePass_WTA_KT_Axes(), fj::contrib::NormalizedMeasure(Beta,JetR));
1539 Result= nSub.result(jet);
1540 SubJet_Axes=nSub.currentAxes();
1542 else if (Algorithm==9){
1543 fj::contrib::Nsubjettiness nSub(N, fj::contrib::OnePass_WTA_CA_Axes(), fj::contrib::NormalizedMeasure(Beta,JetR));
1544 Result= nSub.result(jet);
1545 SubJet_Axes=nSub.currentAxes();
1547 else if (Algorithm==10){
1548 fj::contrib::Nsubjettiness nSub(N, fj::contrib::MultiPass_Axes(100), fj::contrib::NormalizedMeasure(Beta,JetR));
1549 Result= nSub.result(jet);
1550 SubJet_Axes=nSub.currentAxes();
1553 SubJet1_Axis=SubJet_Axes[0];
1554 Double_t SubJet1_Eta=SubJet1_Axis.pseudorapidity();
1556 Double_t SubJet1_Phi=SubJet1_Axis.phi();
1557 if(SubJet1_Phi < -1*TMath::Pi()) SubJet1_Phi += (2*TMath::Pi());
1558 else if (SubJet1_Phi > TMath::Pi()) SubJet1_Phi -= (2*TMath::Pi());
1561 if (SubJet_Axes.size()>1){
1562 SubJet2_Axis=SubJet_Axes[1];
1563 SubJet2_Eta=SubJet2_Axis.pseudorapidity();
1564 SubJet2_Phi=SubJet2_Axis.phi();
1565 if(SubJet2_Phi < -1*TMath::Pi()) SubJet2_Phi += (2*TMath::Pi());
1566 else if (SubJet2_Phi > TMath::Pi()) SubJet2_Phi -= (2*TMath::Pi());
1567 DeltaPhi=SubJet1_Phi-SubJet2_Phi;
1568 if(DeltaPhi < -1*TMath::Pi()) DeltaPhi += (2*TMath::Pi());
1569 else if (DeltaPhi > TMath::Pi()) DeltaPhi -= (2*TMath::Pi());
1573 if (Option==0)
return Result;
1574 else if (Option==1 && SubJet_Axes.size()>1 && N==2)
return TMath::Sqrt(TMath::Power(SubJet1_Eta-SubJet2_Eta,2)+TMath::Power(DeltaPhi,2));
1575 else if (Option==2 && SubJet_Axes.size()>1 && N==2)
return TMath::Sqrt(TMath::Power(SubJet1_Eta-SubJet2_Eta,2)+TMath::Power(DeltaPhi,2));
Double32_t NSubjettinessDerivativeSub(Int_t N, Int_t Algorithm, Double_t Radius, Double_t Beta, Double_t JetR, fastjet::PseudoJet jet, Int_t Option=0, Int_t Measure=0)
std::vector< fastjet::PseudoJet > fEventSubInputVectors
fastjet::PseudoJet GetJetAreaVector(UInt_t idx) const
fastjet::PseudoJet GetEventSubJetAreaVector(UInt_t idx) const
std::vector< double > fGRNumeratorSub
void SetRMaxAndStep(Double_t rmax, Double_t dr)
void SetUseExternalBkg(Bool_t b, Double_t rho, Double_t rhom)
Double_t GetFilteredJetArea(UInt_t idx) const
std::vector< fastjet::PseudoJet > fInputVectors
virtual std::vector< double > GetSubtractedJetsPts(Double_t median_pt=-1, Bool_t sorted=kFALSE)
fastjet::ClusterSequence * fClustSeqSA
virtual Int_t DoEventConstituentSubtraction()
virtual Int_t DoSoftDrop()
fastjet::ClusterSequenceActiveAreaExplicitGhosts * fClustSeqActGhosts
virtual Int_t DoGenericSubtractionJetOpeningAngle_kt()
virtual Int_t DoGenericSubtractionJetpTD()
Double_t GetMedianUsedForBgSubtraction() const
virtual void AddInputVectors(const std::vector< fastjet::PseudoJet > &vecs, Int_t offsetIndex=-99999)
std::vector< fastjet::PseudoJet > fInclusiveJets
fastjet::JetAlgorithm fAlgor
const char * GetTitle() const
fastjet::RecombinationScheme fScheme
std::vector< fastjet::PseudoJet > GetEventSubJetConstituents(UInt_t idx) const
virtual void CopySettingsFrom(const AliFJWrapper &wrapper)
void SetupAlgorithmfromOpt(const char *option)
virtual Int_t DoGenericSubtractionJetAngularity()
virtual Int_t DoGenericSubtractionGR(Int_t ijet)
virtual Int_t DoGenericSubtractionJetMass()
void SetMinJetPt(Double_t MinPt)
void SetMaxRap(Double_t maxrap)
Double_t GetJetSubtractedPt(UInt_t idx) const
fastjet::PseudoJet GetFilteredJetAreaVector(UInt_t idx) const
void SetRecombScheme(const fastjet::RecombinationScheme &scheme)
fastjet::RangeDefinition * fRange
fastjet::ClusterSequenceActiveAreaExplicitGhosts * GetClusterSequenceGhosts() const
fastjet::ClusterSequence * GetClusterSequenceSA() const
void SetStrategy(const fastjet::Strategy &strat)
Double_t GetEventSubJetArea(UInt_t idx) const
std::vector< fastjet::PseudoJet > fFilteredJets
void SetupAreaTypefromOpt(const char *option)
virtual void ClearMemory()
fastjet::AreaType fAreaType
fastjet::ClusterSequenceArea * GetClusterSequence() const
const std::vector< fastjet::PseudoJet > & GetInclusiveJets() const
fastjet::ClusterSequenceArea * fClustSeqES
AliFJWrapper & operator=(const AliFJWrapper &wrapper)
Double_t GetJetArea(UInt_t idx) const
std::vector< double > fSubtractedJetsPt
fastjet::JetDefinition::Plugin * fPlugin
const std::vector< fastjet::PseudoJet > & GetEventSubInputVectors() const
void SetLegacyMode(Bool_t mode)
void SetAlgorithm(const fastjet::JetAlgorithm &algor)
virtual Int_t DoGenericSubtractionJetCircularity()
void SetupSchemefromOpt(const char *option)
const std::vector< fastjet::PseudoJet > & GetInputGhosts() const
std::vector< fastjet::PseudoJet > fGroomedJets
void SetUseArea4Vector(Bool_t useA4v)
fastjet::ClusterSequenceArea * fClustSeq
void SetName(const char *name)
virtual void SubtractBackground(const Double_t median_pt=-1)
std::vector< fastjet::PseudoJet > fInputGhosts
virtual void Clear(const Option_t *="")
fastjet::VoronoiAreaSpec * fVorAreaSpec
std::vector< double > fGRDenominatorSub
fastjet::GhostedAreaSpec * fGhostedAreaSpec
void SetNRepeats(Int_t nrepeat)
const std::vector< fastjet::PseudoJet > & GetEventSubJets() const
virtual std::vector< double > GetGRNumeratorSub() const
std::vector< double > fGRDenominator
virtual Int_t DoGenericSubtractionJet1subjettiness_kt()
virtual void GetMedianAndSigma(Double_t &median, Double_t &sigma, Int_t remove=0) const
void SetGhostArea(Double_t gharea)
Double_t fMedUsedForBgSub
std::vector< fastjet::PseudoJet > GetJetConstituents(UInt_t idx) const
fastjet::JetDefinition * fJetDef
virtual Int_t DoGenericSubtractionJetSigma2()
void SetupStrategyfromOpt(const char *option)
const std::vector< fastjet::PseudoJet > & GetInputVectors() const
fastjet::AreaDefinition * fAreaDef
virtual std::vector< double > GetGRDenominatorSub() const
void SetMaxDelR(Double_t r)
void SetTitle(const char *title)
Double_t NSubjettiness(Int_t N, Int_t Algorithm, Double_t Radius, Double_t Beta, Int_t Option=0, Int_t Measure=0, Double_t Beta_SD=0, Double_t ZCut=0.1)
void SetPluginAlgor(Int_t plugin)
virtual Int_t DoConstituentSubtraction()
virtual std::vector< double > GetGRDenominator() const
void SetRhoRhom(Double_t rho, Double_t rhom)
void SetGridScatter(Double_t gridSc)
std::vector< fastjet::PseudoJet > fConstituentSubtrJets
std::vector< fastjet::PseudoJet > fEventSubJets
std::vector< fastjet::PseudoJet > fEventSubCorrectedVectors
void SetMeanGhostKt(Double_t meankt)
virtual void AddInputVector(Double_t px, Double_t py, Double_t pz, Double_t E, Int_t index=-99999)
virtual void AddInputGhost(Double_t px, Double_t py, Double_t pz, Double_t E, Int_t index=-99999)
virtual Int_t DoGenericSubtractionJet3subjettiness_kt()
void SetEventSub(Bool_t b)
std::vector< fastjet::PseudoJet > GetFilteredJetConstituents(UInt_t idx) const
void SetKtScatter(Double_t ktSc)
virtual std::vector< double > GetGRNumerator() const
virtual const char * ClassName() const
virtual void RemoveLastInputVector()
void SetAreaType(const fastjet::AreaType &atype)
virtual Int_t DoGenericSubtractionJetLeSub()
virtual Int_t DoGenericSubtractionJetConstituent()
const char * GetName() const
const std::vector< fastjet::PseudoJet > & GetFilteredJets() const
virtual Int_t DoGenericSubtractionJet2subjettiness_kt()
std::vector< double > fGRNumerator
fastjet::Strategy fStrategy