21 virtual void AddInputVectors(
const std::vector<fastjet::PseudoJet>& vecs,
Int_t offsetIndex = -99999);
23 virtual const char *
ClassName()
const {
return "AliFJWrapper"; }
54 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,
Double_t Beta_SD=0.0,
Double_t ZCut=0.1,
Int_t SoftDropOn=0);
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::contrib::GenericSubtractorInfo> GetGenSubtractorInfoJet1subjettiness_ca()
const {
return fGenSubtractorInfoJet1subjettiness_ca ; }
68 const std::vector<fastjet::contrib::GenericSubtractorInfo> GetGenSubtractorInfoJet2subjettiness_ca()
const {
return fGenSubtractorInfoJet2subjettiness_ca ; }
69 const std::vector<fastjet::contrib::GenericSubtractorInfo> GetGenSubtractorInfoJetOpeningAngle_ca()
const {
return fGenSubtractorInfoJetOpeningAngle_ca ; }
70 const std::vector<fastjet::contrib::GenericSubtractorInfo> GetGenSubtractorInfoJet1subjettiness_akt02()
const {
return fGenSubtractorInfoJet1subjettiness_akt02 ; }
71 const std::vector<fastjet::contrib::GenericSubtractorInfo> GetGenSubtractorInfoJet2subjettiness_akt02()
const {
return fGenSubtractorInfoJet2subjettiness_akt02 ; }
72 const std::vector<fastjet::contrib::GenericSubtractorInfo> GetGenSubtractorInfoJetOpeningAngle_akt02()
const {
return fGenSubtractorInfoJetOpeningAngle_akt02 ; }
73 const std::vector<fastjet::contrib::GenericSubtractorInfo> GetGenSubtractorInfoJet1subjettiness_onepassca()
const {
return fGenSubtractorInfoJet1subjettiness_onepassca ; }
74 const std::vector<fastjet::contrib::GenericSubtractorInfo> GetGenSubtractorInfoJet2subjettiness_onepassca()
const {
return fGenSubtractorInfoJet2subjettiness_onepassca ; }
75 const std::vector<fastjet::contrib::GenericSubtractorInfo> GetGenSubtractorInfoJetOpeningAngle_onepassca()
const {
return fGenSubtractorInfoJetOpeningAngle_onepassca ; }
76 const std::vector<fastjet::PseudoJet> GetConstituentSubtrJets()
const {
return fConstituentSubtrJets ; }
77 const std::vector<fastjet::PseudoJet> GetGroomedJets()
const {
return fGroomedJets ; }
79 Int_t CreateConstituentSub();
80 Int_t CreateEventConstituentSub();
81 Int_t CreateSoftDrop();
92 virtual void DoGenericSubtraction(
const fastjet::FunctionOfPseudoJet<Double32_t>& jetshape, std::vector<fastjet::contrib::GenericSubtractorInfo>& output);
165 #ifndef FASTJET_VERSION 168 fastjet::Selector *
fRange;
197 #ifdef FASTJET_VERSION 198 fastjet::JetMedianBackgroundEstimator *fBkrdEstimator;
200 fastjet::contrib::GenericSubtractor *fGenSubtractor;
201 fastjet::contrib::ConstituentSubtractor *fConstituentSubtractor;
202 fastjet::contrib::ConstituentSubtractor *fEventConstituentSubtractor;
203 fastjet::contrib::SoftDrop *fSoftDrop;
204 std::vector<fastjet::contrib::GenericSubtractorInfo> fGenSubtractorInfoJetMass;
205 std::vector<fastjet::contrib::GenericSubtractorInfo> fGenSubtractorInfoGRNum;
206 std::vector<fastjet::contrib::GenericSubtractorInfo> fGenSubtractorInfoGRDen;
207 std::vector<fastjet::contrib::GenericSubtractorInfo> fGenSubtractorInfoJetAngularity;
208 std::vector<fastjet::contrib::GenericSubtractorInfo> fGenSubtractorInfoJetpTD;
209 std::vector<fastjet::contrib::GenericSubtractorInfo> fGenSubtractorInfoJetCircularity;
210 std::vector<fastjet::contrib::GenericSubtractorInfo> fGenSubtractorInfoJetSigma2;
211 std::vector<fastjet::contrib::GenericSubtractorInfo> fGenSubtractorInfoJetConstituent;
212 std::vector<fastjet::contrib::GenericSubtractorInfo> fGenSubtractorInfoJetLeSub;
213 std::vector<fastjet::contrib::GenericSubtractorInfo> fGenSubtractorInfoJet1subjettiness_kt;
214 std::vector<fastjet::contrib::GenericSubtractorInfo> fGenSubtractorInfoJet2subjettiness_kt;
215 std::vector<fastjet::contrib::GenericSubtractorInfo> fGenSubtractorInfoJet3subjettiness_kt;
216 std::vector<fastjet::contrib::GenericSubtractorInfo> fGenSubtractorInfoJetOpeningAngle_kt;
217 std::vector<fastjet::contrib::GenericSubtractorInfo> fGenSubtractorInfoJet1subjettiness_ca;
218 std::vector<fastjet::contrib::GenericSubtractorInfo> fGenSubtractorInfoJet2subjettiness_ca;
219 std::vector<fastjet::contrib::GenericSubtractorInfo> fGenSubtractorInfoJetOpeningAngle_ca;
220 std::vector<fastjet::contrib::GenericSubtractorInfo> fGenSubtractorInfoJet1subjettiness_akt02;
221 std::vector<fastjet::contrib::GenericSubtractorInfo> fGenSubtractorInfoJet2subjettiness_akt02;
222 std::vector<fastjet::contrib::GenericSubtractorInfo> fGenSubtractorInfoJetOpeningAngle_akt02;
223 std::vector<fastjet::contrib::GenericSubtractorInfo> fGenSubtractorInfoJet1subjettiness_onepassca;
224 std::vector<fastjet::contrib::GenericSubtractorInfo> fGenSubtractorInfoJet2subjettiness_onepassca;
225 std::vector<fastjet::contrib::GenericSubtractorInfo> fGenSubtractorInfoJetOpeningAngle_onepassca;
249 #ifdef AliFJWrapper_CXX 250 #undef AliFJWrapper_CXX 253 #pragma GCC system_header 284 ,
fAlgor (fj::kt_algorithm)
302 #ifdef FASTJET_VERSION
305 , fConstituentSubtractor (0)
306 , fEventConstituentSubtractor (0)
307 , fGenSubtractorInfoJetMass ( )
308 , fGenSubtractorInfoGRNum ( )
309 , fGenSubtractorInfoGRDen ( )
310 , fGenSubtractorInfoJetAngularity ( )
311 , fGenSubtractorInfoJetpTD ( )
312 , fGenSubtractorInfoJetCircularity( )
313 , fGenSubtractorInfoJetSigma2()
314 , fGenSubtractorInfoJetConstituent ( )
315 , fGenSubtractorInfoJetLeSub ( )
316 , fGenSubtractorInfoJet1subjettiness_kt ( )
317 , fGenSubtractorInfoJet2subjettiness_kt ( )
318 , fGenSubtractorInfoJet3subjettiness_kt ( )
319 , fGenSubtractorInfoJetOpeningAngle_kt ( )
320 , fGenSubtractorInfoJet1subjettiness_ca ( )
321 , fGenSubtractorInfoJet2subjettiness_ca ( )
322 , fGenSubtractorInfoJetOpeningAngle_ca ( )
323 , fGenSubtractorInfoJet1subjettiness_akt02 ( )
324 , fGenSubtractorInfoJet2subjettiness_akt02 ( )
325 , fGenSubtractorInfoJetOpeningAngle_akt02 ( )
326 , fGenSubtractorInfoJet1subjettiness_onepassca ( )
327 , fGenSubtractorInfoJet2subjettiness_onepassca ( )
328 , fGenSubtractorInfoJetOpeningAngle_onepassca ( )
367 #ifdef FASTJET_VERSION 368 if (fBkrdEstimator) {
delete fBkrdEstimator; fBkrdEstimator = NULL; }
369 if (fGenSubtractor) {
delete fGenSubtractor; fGenSubtractor = NULL; }
370 if (fConstituentSubtractor) {
delete fConstituentSubtractor; fConstituentSubtractor = NULL; }
371 if (fSoftDrop) {
delete fSoftDrop; fSoftDrop = NULL;}
433 fastjet::PseudoJet inVec(px, py, pz, E);
437 inVec.set_user_index(index);
453 fj::PseudoJet inVec = vec;
457 inVec.set_user_index(index);
472 for (
UInt_t i = 0; i < vecs.size(); ++i) {
473 fj::PseudoJet inVec = vecs[i];
474 if (offsetIndex > -99999)
496 fastjet::PseudoJet inVec(px, py, pz, E);
498 if (index > -99999) {
499 inVec.set_user_index(index);
518 AliError(Form(
"[e] ::GetJetArea wrong index: %d",idx));
532 AliError(Form(
"[e] ::GetJetArea wrong index: %d",idx));
545 AliError(Form(
"[e] ::GetFilteredJetArea wrong index: %d",idx));
554 fastjet::PseudoJet retval;
558 AliError(Form(
"[e] ::GetJetArea wrong index: %d",idx));
567 fastjet::PseudoJet retval;
571 AliError(Form(
"[e] ::GetJetArea wrong index: %d",idx));
580 fastjet::PseudoJet retval;
584 AliError(Form(
"[e] ::GetFilteredJetArea wrong index: %d",idx));
596 if (kTRUE == sorted) {
615 std::vector<fastjet::PseudoJet>
620 std::vector<fastjet::PseudoJet> retval;
625 AliError(Form(
"[e] ::GetJetConstituents wrong index: %d",idx));
632 std::vector<fastjet::PseudoJet>
637 std::vector<fastjet::PseudoJet> retval;
642 AliError(Form(
"[e] ::GetJetConstituents wrong index: %d",idx));
649 std::vector<fastjet::PseudoJet>
654 std::vector<fastjet::PseudoJet> retval;
660 AliError(Form(
"[e] ::GetFilteredJetConstituents wrong index: %d",idx));
673 AliError(
"[e] Run the jfinder first.");
682 std::vector<fastjet::PseudoJet> input_jets = sorted_by_pt(
fClustSeq->inclusive_jets());
683 input_jets.erase(input_jets.begin(), input_jets.begin() +
remove);
687 }
catch (fj::Error) {
688 AliError(
" [w] FJ Exception caught.");
716 #ifndef FASTJET_VERSION 722 if (
fAlgor == fj::plugin_algorithm) {
742 AliError(
"[e] Unrecognized plugin number!");
754 }
catch (fj::Error) {
755 AliError(
" [w] FJ Exception caught.");
760 #ifdef FASTJET_VERSION 761 fBkrdEstimator =
new fj::JetMedianBackgroundEstimator(fj::SelectorAbsRapMax(
fMaxRap));
791 }
catch (fj::Error) {
792 AliError(
" [w] FJ Exception caught.");
804 }
catch (fj::Error) {
805 AliError(
" [w] FJ Exception caught.");
820 #ifdef FASTJET_VERSION 821 std::cout <<
"WARNING! Setting FastJet in legacy mode" << std::endl;
823 if (fBkrdEstimator) {
824 fBkrdEstimator->set_provide_fj2_sigma(kTRUE);
825 fBkrdEstimator->set_use_area_4vector(kFALSE);
852 AliError(
" [w] FJ Exception caught.");
862 if (0.0 == median_pt) {
891 #ifdef FASTJET_VERSION 897 fj::contrib::GenericSubtractorInfo info_jetshape;
899 double subtracted_shape = (*fGenSubtractor)(jetshape,
fInclusiveJets[i], info_jetshape);
900 output.push_back(info_jetshape);
908 #ifdef FASTJET_VERSION 912 AliJetShapeMass shapeMass;
915 fGenSubtractorInfoJetMass.clear();
917 fj::contrib::GenericSubtractorInfo info;
919 double subtracted_shape = (*fGenSubtractor)(shapeMass,
fInclusiveJets[i], info);
920 fGenSubtractorInfoJetMass.push_back(info);
929 #ifdef FASTJET_VERSION 941 AliJetShapeGRNum shapeGRNum(r,
fDRStep);
942 AliJetShapeGRDen shapeGRDen(r,
fDRStep);
945 fGenSubtractorInfoGRNum.clear();
946 fGenSubtractorInfoGRDen.clear();
947 fj::contrib::GenericSubtractorInfo infoNum;
948 fj::contrib::GenericSubtractorInfo infoDen;
950 double sub_num = (*fGenSubtractor)(shapeGRNum,
fInclusiveJets[ijet], infoNum);
951 double sub_den = (*fGenSubtractor)(shapeGRDen, fInclusiveJets[ijet], infoDen);
953 fGenSubtractorInfoGRNum.push_back(infoNum);
954 fGenSubtractorInfoGRDen.push_back(infoDen);
966 #ifdef FASTJET_VERSION 970 AliJetShapeAngularity shapeAngularity;
973 fGenSubtractorInfoJetAngularity.clear();
975 fj::contrib::GenericSubtractorInfo infoAng;
977 double subtracted_shape = (*fGenSubtractor)(shapeAngularity,
fInclusiveJets[i], infoAng);
978 fGenSubtractorInfoJetAngularity.push_back(infoAng);
986 #ifdef FASTJET_VERSION 990 AliJetShapepTD shapepTD;
993 fGenSubtractorInfoJetpTD.clear();
995 fj::contrib::GenericSubtractorInfo infopTD;
997 double subtracted_shape = (*fGenSubtractor)(shapepTD,
fInclusiveJets[i], infopTD);
998 fGenSubtractorInfoJetpTD.push_back(infopTD);
1006 #ifdef FASTJET_VERSION 1010 AliJetShapeCircularity shapecircularity;
1013 fGenSubtractorInfoJetCircularity.clear();
1015 fj::contrib::GenericSubtractorInfo infoCirc;
1017 double subtracted_shape = (*fGenSubtractor)(shapecircularity,
fInclusiveJets[i], infoCirc);
1018 fGenSubtractorInfoJetCircularity.push_back(infoCirc);
1026 #ifdef FASTJET_VERSION 1030 AliJetShapeSigma2 shapesigma2;
1033 fGenSubtractorInfoJetSigma2.clear();
1035 fj::contrib::GenericSubtractorInfo infoSigma;
1037 double subtracted_shape = (*fGenSubtractor)(shapesigma2,
fInclusiveJets[i], infoSigma);
1038 fGenSubtractorInfoJetSigma2.push_back(infoSigma);
1046 #ifdef FASTJET_VERSION 1050 AliJetShapeConstituent shapeconst;
1053 fGenSubtractorInfoJetConstituent.clear();
1055 fj::contrib::GenericSubtractorInfo infoConst;
1057 double subtracted_shape = (*fGenSubtractor)(shapeconst,
fInclusiveJets[i], infoConst);
1058 fGenSubtractorInfoJetConstituent.push_back(infoConst);
1067 #ifdef FASTJET_VERSION 1071 AliJetShapeLeSub shapeLeSub;
1074 fGenSubtractorInfoJetLeSub.clear();
1076 fj::contrib::GenericSubtractorInfo infoLeSub;
1078 double subtracted_shape = (*fGenSubtractor)(shapeLeSub,
fInclusiveJets[i], infoLeSub);
1079 fGenSubtractorInfoJetLeSub.push_back(infoLeSub);
1088 #ifdef FASTJET_VERSION 1090 AliJetShape1subjettiness_kt shape1subjettiness_kt;
1099 #ifdef FASTJET_VERSION 1101 AliJetShape2subjettiness_kt shape2subjettiness_kt;
1110 #ifdef FASTJET_VERSION 1112 AliJetShape3subjettiness_kt shape3subjettiness_kt;
1121 #ifdef FASTJET_VERSION 1123 AliJetShapeOpeningAngle_kt shapeOpeningAngle_kt;
1132 #ifdef FASTJET_VERSION 1134 AliJetShape1subjettiness_ca shape1subjettiness_ca;
1143 #ifdef FASTJET_VERSION 1145 AliJetShape2subjettiness_ca shape2subjettiness_ca;
1154 #ifdef FASTJET_VERSION 1156 AliJetShapeOpeningAngle_ca shapeOpeningAngle_ca;
1165 #ifdef FASTJET_VERSION 1167 AliJetShape1subjettiness_akt02 shape1subjettiness_akt02;
1176 #ifdef FASTJET_VERSION 1178 AliJetShape2subjettiness_akt02 shape2subjettiness_akt02;
1187 #ifdef FASTJET_VERSION 1189 AliJetShapeOpeningAngle_akt02 shapeOpeningAngle_akt02;
1198 #ifdef FASTJET_VERSION 1200 AliJetShape1subjettiness_onepassca shape1subjettiness_onepassca;
1201 DoGenericSubtraction(shape1subjettiness_onepassca, fGenSubtractorInfoJet1subjettiness_onepassca);
1209 #ifdef FASTJET_VERSION 1211 AliJetShape2subjettiness_onepassca shape2subjettiness_onepassca;
1212 DoGenericSubtraction(shape2subjettiness_onepassca, fGenSubtractorInfoJet2subjettiness_onepassca);
1221 #ifdef FASTJET_VERSION 1223 AliJetShapeOpeningAngle_onepassca shapeOpeningAngle_onepassca;
1224 DoGenericSubtraction(shapeOpeningAngle_onepassca, fGenSubtractorInfoJetOpeningAngle_onepassca);
1232 #ifdef FASTJET_VERSION 1233 CreateConstituentSub();
1240 fj::PseudoJet subtracted_jet(0.,0.,0.,0.);
1245 if(fConstituentSubtractor) {
delete fConstituentSubtractor; fConstituentSubtractor = NULL; }
1254 #ifdef FASTJET_VERSION 1255 CreateEventConstituentSub();
1258 if(fEventConstituentSubtractor) {
delete fEventConstituentSubtractor; fEventConstituentSubtractor = NULL; }
1267 #ifdef FASTJET_VERSION 1277 fj::PseudoJet groomed_jet(0.,0.,0.,0.);
1280 groomed_jet.set_user_index(i);
1281 if(groomed_jet!=0)
fGroomedJets.push_back(groomed_jet);
1285 if(fSoftDrop) {
delete fSoftDrop; fSoftDrop = NULL; }
1292 Int_t AliFJWrapper::CreateSoftDrop() {
1294 #ifdef FASTJET_VERSION 1295 if (fSoftDrop) {
delete fSoftDrop; }
1297 fSoftDrop =
new fj::contrib::SoftDrop(
fBeta,
fZcut);
1298 fSoftDrop->set_verbose_structure(kTRUE);
1306 Int_t AliFJWrapper::CreateGenSub() {
1308 #ifdef FASTJET_VERSION 1309 if (fGenSubtractor) {
delete fGenSubtractor; }
1312 { fGenSubtractor =
new fj::contrib::GenericSubtractor(
fRho,
fRhom); }
1315 fGenSubtractor =
new fj::contrib::GenericSubtractor(fBkrdEstimator);
1316 #if FASTJET_VERSION_NUMBER >= 30100 1317 fGenSubtractor->set_common_bge_for_rho_and_rhom();
1326 Int_t AliFJWrapper::CreateConstituentSub() {
1328 #ifdef FASTJET_VERSION 1329 if (fConstituentSubtractor) {
delete fConstituentSubtractor; }
1334 else { fConstituentSubtractor =
new fj::contrib::ConstituentSubtractor(fBkrdEstimator); }
1341 Int_t AliFJWrapper::CreateEventConstituentSub() {
1343 #ifdef FASTJET_VERSION 1344 if (fEventConstituentSubtractor) {
delete fEventConstituentSubtractor; }
1348 else fEventConstituentSubtractor =
new fj::contrib::ConstituentSubtractor(fBkrdEstimator);
1359 std::string opt(option);
1361 if (!opt.compare(
"kt"))
fAlgor = fj::kt_algorithm;
1362 if (!opt.compare(
"antikt"))
fAlgor = fj::antikt_algorithm;
1363 if (!opt.compare(
"cambridge"))
fAlgor = fj::cambridge_algorithm;
1364 if (!opt.compare(
"genkt"))
fAlgor = fj::genkt_algorithm;
1365 if (!opt.compare(
"cambridge_passive"))
fAlgor = fj::cambridge_for_passive_algorithm;
1366 if (!opt.compare(
"genkt_passive"))
fAlgor = fj::genkt_for_passive_algorithm;
1367 if (!opt.compare(
"ee_kt"))
fAlgor = fj::ee_kt_algorithm;
1368 if (!opt.compare(
"ee_genkt"))
fAlgor = fj::ee_genkt_algorithm;
1369 if (!opt.compare(
"plugin"))
fAlgor = fj::plugin_algorithm;
1377 std::string opt(option);
1379 if (!opt.compare(
"active"))
fAreaType = fj::active_area;
1380 if (!opt.compare(
"invalid"))
fAreaType = fj::invalid_area;
1381 if (!opt.compare(
"active_area_explicit_ghosts"))
fAreaType = fj::active_area_explicit_ghosts;
1382 if (!opt.compare(
"one_ghost_passive"))
fAreaType = fj::one_ghost_passive_area;
1383 if (!opt.compare(
"passive"))
fAreaType = fj::passive_area;
1384 if (!opt.compare(
"voronoi"))
fAreaType = fj::voronoi_area;
1394 std::string opt(option);
1396 if (!opt.compare(
"BIpt"))
fScheme = fj::BIpt_scheme;
1397 if (!opt.compare(
"BIpt2"))
fScheme = fj::BIpt2_scheme;
1398 if (!opt.compare(
"E"))
fScheme = fj::E_scheme;
1399 if (!opt.compare(
"pt"))
fScheme = fj::pt_scheme;
1400 if (!opt.compare(
"pt2"))
fScheme = fj::pt2_scheme;
1401 if (!opt.compare(
"Et"))
fScheme = fj::Et_scheme;
1402 if (!opt.compare(
"Et2"))
fScheme = fj::Et2_scheme;
1410 std::string opt(option);
1412 if (!opt.compare(
"Best"))
fStrategy = fj::Best;
1413 if (!opt.compare(
"N2MinHeapTiled"))
fStrategy = fj::N2MinHeapTiled;
1414 if (!opt.compare(
"N2Tiled"))
fStrategy = fj::N2Tiled;
1415 if (!opt.compare(
"N2PoorTiled"))
fStrategy = fj::N2PoorTiled;
1416 if (!opt.compare(
"N2Plain"))
fStrategy = fj::N2Plain;
1417 if (!opt.compare(
"N3Dumb"))
fStrategy = fj::N3Dumb;
1418 if (!opt.compare(
"NlnN"))
fStrategy = fj::NlnN;
1419 if (!opt.compare(
"NlnN3pi"))
fStrategy = fj::NlnN3pi;
1420 if (!opt.compare(
"NlnN4pi"))
fStrategy = fj::NlnN4pi;
1421 if (!opt.compare(
"NlnNCam4pi"))
fStrategy = fj::NlnNCam4pi;
1422 if (!opt.compare(
"NlnNCam2pi2R"))
fStrategy = fj::NlnNCam2pi2R;
1423 if (!opt.compare(
"NlnNCam"))
fStrategy = fj::NlnNCam;
1424 if (!opt.compare(
"plugin"))
fStrategy = fj::plugin_strategy;
1437 }
catch (fj::Error) {
1438 AliError(
" [w] FJ Exception caught.");
1445 std::vector<fastjet::PseudoJet> SubJet_Axes;
1446 fj::PseudoJet SubJet1_Axis;
1447 fj::PseudoJet SubJet2_Axis;
1448 std::vector<fastjet::PseudoJet> SubJets;
1449 fj::PseudoJet SubJet1;
1450 fj::PseudoJet SubJet2;
1453 if (Option==3 || Option==4 || SoftDropOn==1){
1457 fj::contrib::SoftDrop Soft_Drop(Beta_SD,ZCut);
1460 if (Soft_Dropped_Jet==0) Result_SoftDrop=-3;
1462 if (Soft_Dropped_Jet.constituents().size()>1){
1463 if (Option==3) Result_SoftDrop=Soft_Dropped_Jet.structure_of<fj::contrib::SoftDrop>().delta_R();
1464 else if (Option==4) Result_SoftDrop=Soft_Dropped_Jet.structure_of<fj::contrib::SoftDrop>().symmetry();
1466 if (SoftDropOn==1 && Soft_Dropped_Jet.constituents().size()>=N)
fFilteredJets[0]=Soft_Dropped_Jet;
1467 else if (SoftDropOn==1 && Soft_Dropped_Jet.constituents().size()<N)
return -1;
1475 fj::contrib::Nsubjettiness nSub(N, fj::contrib::KT_Axes(), fj::contrib::NormalizedMeasure(Beta,
fR));
1477 SubJet_Axes=nSub.currentAxes();
1478 SubJets=nSub.currentSubjets();
1480 else if (Measure==1){
1481 fj::contrib::Nsubjettiness nSub(N, fj::contrib::KT_Axes(), fj::contrib::UnnormalizedMeasure(Beta));
1483 SubJet_Axes=nSub.currentAxes();
1484 SubJets=nSub.currentSubjets();
1487 else if (Algorithm==1) {
1488 fj::contrib::Nsubjettiness nSub(N, fj::contrib::CA_Axes(), fj::contrib::NormalizedMeasure(Beta,
fR));
1490 SubJet_Axes=nSub.currentAxes();
1491 SubJets=nSub.currentSubjets();
1493 else if (Algorithm==2){
1494 fj::contrib::Nsubjettiness nSub(N, fj::contrib::AntiKT_Axes(Radius), fj::contrib::NormalizedMeasure(Beta,
fR));
1496 SubJet_Axes=nSub.currentAxes();
1497 SubJets=nSub.currentSubjets();
1499 else if (Algorithm==3) {
1500 fj::contrib::Nsubjettiness nSub(N, fj::contrib::WTA_KT_Axes(), fj::contrib::NormalizedMeasure(Beta,
fR));
1502 SubJet_Axes=nSub.currentAxes();
1503 SubJets=nSub.currentSubjets();
1505 else if (Algorithm==4) {
1506 fj::contrib::Nsubjettiness nSub(N, fj::contrib::WTA_CA_Axes(), fj::contrib::NormalizedMeasure(Beta,
fR));
1508 SubJet_Axes=nSub.currentAxes();
1509 SubJets=nSub.currentSubjets();
1511 else if (Algorithm==5){
1512 fj::contrib::Nsubjettiness nSub(N, fj::contrib::OnePass_KT_Axes(), fj::contrib::NormalizedMeasure(Beta,
fR));
1514 SubJet_Axes=nSub.currentAxes();
1515 SubJets=nSub.currentSubjets();
1517 else if (Algorithm==6){
1518 fj::contrib::Nsubjettiness nSub(N, fj::contrib::OnePass_CA_Axes(), fj::contrib::NormalizedMeasure(Beta,
fR));
1520 SubJet_Axes=nSub.currentAxes();
1521 SubJets=nSub.currentSubjets();
1523 else if (Algorithm==7){
1524 fj::contrib::Nsubjettiness nSub(N, fj::contrib::OnePass_AntiKT_Axes(Radius), fj::contrib::NormalizedMeasure(Beta,
fR));
1526 SubJet_Axes=nSub.currentAxes();
1527 SubJets=nSub.currentSubjets();
1529 else if (Algorithm==8){
1530 fj::contrib::Nsubjettiness nSub(N, fj::contrib::OnePass_WTA_KT_Axes(), fj::contrib::NormalizedMeasure(Beta,
fR));
1532 SubJet_Axes=nSub.currentAxes();
1533 SubJets=nSub.currentSubjets();
1535 else if (Algorithm==9){
1536 fj::contrib::Nsubjettiness nSub(N, fj::contrib::OnePass_WTA_CA_Axes(), fj::contrib::NormalizedMeasure(Beta,
fR));
1538 SubJet_Axes=nSub.currentAxes();
1539 SubJets=nSub.currentSubjets();
1541 else if (Algorithm==10){
1543 fj::contrib::Nsubjettiness nSub(N, fj::contrib::MultiPass_Axes(100), fj::contrib::NormalizedCutoffMeasure(Beta,
fR,10.0));
1545 SubJet_Axes=nSub.currentAxes();
1546 SubJets=nSub.currentSubjets();
1552 SubJet1_Axis=SubJet_Axes[0];
1553 Double_t SubJet1_Eta=SubJet1_Axis.pseudorapidity();
1555 Double_t SubJet1_Phi=SubJet1_Axis.phi();
1556 if(SubJet1_Phi < -1*TMath::Pi()) SubJet1_Phi += (2*TMath::Pi());
1557 else if (SubJet1_Phi > TMath::Pi()) SubJet1_Phi -= (2*TMath::Pi());
1560 if (SubJet_Axes.size()>1){
1561 SubJet2_Axis=SubJet_Axes[1];
1562 SubJet2_Eta=SubJet2_Axis.pseudorapidity();
1563 SubJet2_Phi=SubJet2_Axis.phi();
1564 if(SubJet2_Phi < -1*TMath::Pi()) SubJet2_Phi += (2*TMath::Pi());
1565 else if (SubJet2_Phi > TMath::Pi()) SubJet2_Phi -= (2*TMath::Pi());
1566 DeltaPhi=SubJet1_Phi-SubJet2_Phi;
1567 if(DeltaPhi < -1*TMath::Pi()) DeltaPhi += (2*TMath::Pi());
1568 else if (DeltaPhi > TMath::Pi()) DeltaPhi -= (2*TMath::Pi());
1573 Double_t SubJet1Eta=SubJet1.pseudorapidity();
1576 if(SubJet1Phi < -1*TMath::Pi()) SubJet1Phi += (2*TMath::Pi());
1577 else if (SubJet1Phi > TMath::Pi()) SubJet1Phi -= (2*TMath::Pi());
1580 Double_t SubJet1LeadingTrackPt=-3.0;
1581 Double_t SubJet2LeadingTrackPt=-3.0;
1582 std::vector<fj::PseudoJet> SubJet1Tracks = SubJet1.constituents();
1583 for (
Int_t i=0; i<SubJet1Tracks.size(); i++){
1584 if (SubJet1Tracks[i].perp() > SubJet1LeadingTrackPt) SubJet1LeadingTrackPt=SubJet1Tracks[i].perp();
1586 if (SubJet_Axes.size()>1){
1588 SubJet2Eta=SubJet2.pseudorapidity();
1589 SubJet2Phi=SubJet2.phi();
1590 if(SubJet2Phi < -1*TMath::Pi()) SubJet2Phi += (2*TMath::Pi());
1591 else if (SubJet2Phi > TMath::Pi()) SubJet2Phi -= (2*TMath::Pi());
1592 DeltaPhiSubJets=SubJet1Phi-SubJet2Phi;
1593 if(DeltaPhiSubJets < -1*TMath::Pi()) DeltaPhiSubJets += (2*TMath::Pi());
1594 else if (DeltaPhiSubJets > TMath::Pi()) DeltaPhiSubJets -= (2*TMath::Pi());
1595 std::vector<fj::PseudoJet> SubJet2Tracks = SubJet2.constituents();
1596 for (
Int_t i=0; i<SubJet2Tracks.size(); i++){
1597 if (SubJet2Tracks[i].perp() > SubJet2LeadingTrackPt) SubJet2LeadingTrackPt=SubJet2Tracks[i].perp();
1604 if (Option==0)
return Result;
1605 else if (Option==1 && SubJet_Axes.size()>1 && N==2)
return TMath::Sqrt(TMath::Power(SubJet1_Eta-SubJet2_Eta,2)+TMath::Power(DeltaPhi,2));
1606 else if (Option==2 && SubJet_Axes.size()>1 && N==2)
return TMath::Sqrt(TMath::Power(SubJet1_Eta-SubJet2_Eta,2)+TMath::Power(DeltaPhi,2));
1607 else if ((Option==3 || Option==4) && N==2)
return Result_SoftDrop;
1608 else if (Option==5 && SubJets.size()>1 && N==2)
return SubJet1.perp();
1609 else if (Option==6 && SubJets.size()>1 && N==2)
return SubJet2.perp();
1610 else if (Option==7 && SubJets.size()>1 && N==2)
return TMath::Sqrt(TMath::Power(SubJet1Eta-SubJet2Eta,2)+TMath::Power(DeltaPhiSubJets,2));
1611 else if (Option==8 && SubJets.size()>1 && N==2)
return SubJet1LeadingTrackPt;
1612 else if (Option==9 && SubJets.size()>1 && N==2)
return SubJet2LeadingTrackPt;
1618 Double32_t
AliFJWrapper::NSubjettinessDerivativeSub(
Int_t N,
Int_t Algorithm,
Double_t Radius,
Double_t Beta,
Double_t JetR, fastjet::PseudoJet jet,
Int_t Option,
Int_t Measure,
Double_t Beta_SD,
Double_t ZCut,
Int_t SoftDropOn){
1621 std::vector<fastjet::PseudoJet> SubJet_Axes;
1622 fj::PseudoJet SubJet1_Axis;
1623 fj::PseudoJet SubJet2_Axis;
1629 fj::contrib::SoftDrop Soft_Drop(Beta_SD,ZCut);
1631 fj::PseudoJet Soft_Dropped_Jet=Soft_Drop(jet);
1632 if (Soft_Dropped_Jet==0)
return -3;
1634 if (Soft_Dropped_Jet.constituents().size()>=N) jet=Soft_Dropped_Jet;
1635 else if (Soft_Dropped_Jet.constituents().size()<N)
return -1;
1641 fj::contrib::Nsubjettiness nSub(N, fj::contrib::KT_Axes(), fj::contrib::NormalizedMeasure(Beta,JetR));
1642 Result= nSub.result(jet);
1643 SubJet_Axes=nSub.currentAxes();
1645 else if (Algorithm==1) {
1646 fj::contrib::Nsubjettiness nSub(N, fj::contrib::CA_Axes(), fj::contrib::NormalizedMeasure(Beta,JetR));
1647 Result= nSub.result(jet);
1648 SubJet_Axes=nSub.currentAxes();
1650 else if (Algorithm==2){
1651 fj::contrib::Nsubjettiness nSub(N, fj::contrib::AntiKT_Axes(Radius), fj::contrib::NormalizedMeasure(Beta,JetR));
1652 Result= nSub.result(jet);
1653 SubJet_Axes=nSub.currentAxes();
1655 else if (Algorithm==3) {
1656 fj::contrib::Nsubjettiness nSub(N, fj::contrib::WTA_KT_Axes(), fj::contrib::NormalizedMeasure(Beta,JetR));
1657 Result= nSub.result(jet);
1658 SubJet_Axes=nSub.currentAxes();
1660 else if (Algorithm==4) {
1661 fj::contrib::Nsubjettiness nSub(N, fj::contrib::WTA_CA_Axes(), fj::contrib::NormalizedMeasure(Beta,JetR));
1662 Result= nSub.result(jet);
1663 SubJet_Axes=nSub.currentAxes();
1665 else if (Algorithm==5){
1666 fj::contrib::Nsubjettiness nSub(N, fj::contrib::OnePass_KT_Axes(), fj::contrib::NormalizedMeasure(Beta,JetR));
1667 Result= nSub.result(jet);
1668 SubJet_Axes=nSub.currentAxes();
1670 else if (Algorithm==6){
1671 fj::contrib::Nsubjettiness nSub(N, fj::contrib::OnePass_CA_Axes(), fj::contrib::NormalizedMeasure(Beta,JetR));
1672 Result= nSub.result(jet);
1673 SubJet_Axes=nSub.currentAxes();
1675 else if (Algorithm==7){
1676 fj::contrib::Nsubjettiness nSub(N, fj::contrib::OnePass_AntiKT_Axes(Radius), fj::contrib::NormalizedMeasure(Beta,JetR));
1677 Result= nSub.result(jet);
1678 SubJet_Axes=nSub.currentAxes();
1680 else if (Algorithm==8){
1681 fj::contrib::Nsubjettiness nSub(N, fj::contrib::OnePass_WTA_KT_Axes(), fj::contrib::NormalizedMeasure(Beta,JetR));
1682 Result= nSub.result(jet);
1683 SubJet_Axes=nSub.currentAxes();
1685 else if (Algorithm==9){
1686 fj::contrib::Nsubjettiness nSub(N, fj::contrib::OnePass_WTA_CA_Axes(), fj::contrib::NormalizedMeasure(Beta,JetR));
1687 Result= nSub.result(jet);
1688 SubJet_Axes=nSub.currentAxes();
1690 else if (Algorithm==10){
1692 fj::contrib::Nsubjettiness nSub(N, fj::contrib::MultiPass_Axes(100), fj::contrib::NormalizedCutoffMeasure(Beta,JetR,10.0));
1693 Result= nSub.result(jet);
1694 SubJet_Axes=nSub.currentAxes();
1697 SubJet1_Axis=SubJet_Axes[0];
1698 Double_t SubJet1_Eta=SubJet1_Axis.pseudorapidity();
1700 Double_t SubJet1_Phi=SubJet1_Axis.phi();
1701 if(SubJet1_Phi < -1*TMath::Pi()) SubJet1_Phi += (2*TMath::Pi());
1702 else if (SubJet1_Phi > TMath::Pi()) SubJet1_Phi -= (2*TMath::Pi());
1705 if (SubJet_Axes.size()>1){
1706 SubJet2_Axis=SubJet_Axes[1];
1707 SubJet2_Eta=SubJet2_Axis.pseudorapidity();
1708 SubJet2_Phi=SubJet2_Axis.phi();
1709 if(SubJet2_Phi < -1*TMath::Pi()) SubJet2_Phi += (2*TMath::Pi());
1710 else if (SubJet2_Phi > TMath::Pi()) SubJet2_Phi -= (2*TMath::Pi());
1711 DeltaPhi=SubJet1_Phi-SubJet2_Phi;
1712 if(DeltaPhi < -1*TMath::Pi()) DeltaPhi += (2*TMath::Pi());
1713 else if (DeltaPhi > TMath::Pi()) DeltaPhi -= (2*TMath::Pi());
1717 if (Option==0)
return Result;
1718 else if (Option==1 && SubJet_Axes.size()>1 && N==2)
return TMath::Sqrt(TMath::Power(SubJet1_Eta-SubJet2_Eta,2)+TMath::Power(DeltaPhi,2));
1719 else if (Option==2 && SubJet_Axes.size()>1 && N==2)
return TMath::Sqrt(TMath::Power(SubJet1_Eta-SubJet2_Eta,2)+TMath::Power(DeltaPhi,2));
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)
virtual Int_t DoGenericSubtractionJet1subjettiness_onepassca()
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)
virtual Int_t DoGenericSubtractionJetOpeningAngle_ca()
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
virtual Int_t DoGenericSubtractionJetOpeningAngle_akt02()
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 DoGenericSubtractionJetOpeningAngle_onepassca()
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)
virtual Int_t DoGenericSubtractionJet2subjettiness_ca()
virtual Int_t DoGenericSubtractionJet1subjettiness_akt02()
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 Int_t DoGenericSubtractionJet2subjettiness_akt02()
virtual std::vector< double > GetGRDenominatorSub() const
void SetMaxDelR(Double_t r)
virtual void DoGenericSubtraction(const fastjet::FunctionOfPseudoJet< Double32_t > &jetshape, std::vector< fastjet::contrib::GenericSubtractorInfo > &output)
void SetTitle(const char *title)
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
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.0, Double_t ZCut=0.1, Int_t SoftDropOn=0)
std::vector< fastjet::PseudoJet > fEventSubJets
std::vector< fastjet::PseudoJet > fEventSubCorrectedVectors
void SetMeanGhostKt(Double_t meankt)
void SetAlpha(Double_t a)
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)
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, Double_t Beta_SD=0.0, Double_t ZCut=0.1, Int_t SoftDropOn=0)
virtual Int_t DoGenericSubtractionJet3subjettiness_kt()
void SetEventSub(Bool_t b)
std::vector< fastjet::PseudoJet > GetFilteredJetConstituents(UInt_t idx) const
virtual Int_t DoGenericSubtractionJet1subjettiness_ca()
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 DoGenericSubtractionJet2subjettiness_onepassca()
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