21 virtual void AddInputVectors(
const std::vector<fastjet::PseudoJet>& vecs,
Int_t offsetIndex = -99999);
23 virtual const char *
ClassName()
const {
return "AliFJWrapper"; }
50 #ifdef FASTJET_VERSION
51 const std::vector<fastjet::contrib::GenericSubtractorInfo> GetGenSubtractorInfoJetMass()
const {
return fGenSubtractorInfoJetMass ; }
52 const std::vector<fastjet::contrib::GenericSubtractorInfo> GetGenSubtractorInfoJetAngularity()
const {
return fGenSubtractorInfoJetAngularity ; }
53 const std::vector<fastjet::contrib::GenericSubtractorInfo> GetGenSubtractorInfoJetpTD()
const {
return fGenSubtractorInfoJetpTD ; }
54 const std::vector<fastjet::contrib::GenericSubtractorInfo> GetGenSubtractorInfoJetCircularity()
const {
return fGenSubtractorInfoJetCircularity ; }
55 const std::vector<fastjet::contrib::GenericSubtractorInfo> GetGenSubtractorInfoJetSigma2()
const {
return fGenSubtractorInfoJetSigma2 ; }
56 const std::vector<fastjet::contrib::GenericSubtractorInfo> GetGenSubtractorInfoJetConstituent()
const {
return fGenSubtractorInfoJetConstituent ; }
57 const std::vector<fastjet::contrib::GenericSubtractorInfo> GetGenSubtractorInfoJetLeSub()
const {
return fGenSubtractorInfoJetLeSub ; }
58 const std::vector<fastjet::contrib::GenericSubtractorInfo> GetGenSubtractorInfoJet1subjettiness_kt()
const {
return fGenSubtractorInfoJet1subjettiness_kt ; }
59 const std::vector<fastjet::contrib::GenericSubtractorInfo> GetGenSubtractorInfoJet2subjettiness_kt()
const {
return fGenSubtractorInfoJet2subjettiness_kt ; }
60 const std::vector<fastjet::contrib::GenericSubtractorInfo> GetGenSubtractorInfoJet3subjettiness_kt()
const {
return fGenSubtractorInfoJet3subjettiness_kt ; }
61 const std::vector<fastjet::contrib::GenericSubtractorInfo> GetGenSubtractorInfoJetOpeningAngle_kt()
const {
return fGenSubtractorInfoJetOpeningAngle_kt ; }
62 const std::vector<fastjet::PseudoJet> GetConstituentSubtrJets()
const {
return fConstituentSubtrJets ; }
63 const std::vector<fastjet::PseudoJet> GetGroomedJets()
const {
return fGroomedJets ; }
65 Int_t CreateConstituentSub();
66 Int_t CreateSoftDrop();
133 #ifndef FASTJET_VERSION
136 fastjet::Selector *
fRange;
161 #ifdef FASTJET_VERSION
162 fastjet::JetMedianBackgroundEstimator *fBkrdEstimator;
164 fastjet::contrib::GenericSubtractor *fGenSubtractor;
165 fastjet::contrib::ConstituentSubtractor *fConstituentSubtractor;
166 fastjet::contrib::SoftDrop *fSoftDrop;
167 std::vector<fastjet::contrib::GenericSubtractorInfo> fGenSubtractorInfoJetMass;
168 std::vector<fastjet::contrib::GenericSubtractorInfo> fGenSubtractorInfoGRNum;
169 std::vector<fastjet::contrib::GenericSubtractorInfo> fGenSubtractorInfoGRDen;
170 std::vector<fastjet::contrib::GenericSubtractorInfo> fGenSubtractorInfoJetAngularity;
171 std::vector<fastjet::contrib::GenericSubtractorInfo> fGenSubtractorInfoJetpTD;
172 std::vector<fastjet::contrib::GenericSubtractorInfo> fGenSubtractorInfoJetCircularity;
173 std::vector<fastjet::contrib::GenericSubtractorInfo> fGenSubtractorInfoJetSigma2;
174 std::vector<fastjet::contrib::GenericSubtractorInfo> fGenSubtractorInfoJetConstituent;
175 std::vector<fastjet::contrib::GenericSubtractorInfo> fGenSubtractorInfoJetLeSub;
176 std::vector<fastjet::contrib::GenericSubtractorInfo> fGenSubtractorInfoJet1subjettiness_kt;
177 std::vector<fastjet::contrib::GenericSubtractorInfo> fGenSubtractorInfoJet2subjettiness_kt;
178 std::vector<fastjet::contrib::GenericSubtractorInfo> fGenSubtractorInfoJet3subjettiness_kt;
179 std::vector<fastjet::contrib::GenericSubtractorInfo> fGenSubtractorInfoJetOpeningAngle_kt;
203 #ifdef AliFJWrapper_CXX
204 #undef AliFJWrapper_CXX
207 #pragma GCC system_header
210 namespace fj = fastjet;
221 , fSubtractedJetsPt ( )
222 , fConstituentSubtrJets ( )
226 , fGhostedAreaSpec (0)
232 , fClustSeqActGhosts (0)
233 , fStrategy (fj::Best)
234 , fAlgor (fj::kt_algorithm)
235 , fScheme (fj::BIpt_scheme)
236 , fAreaType (fj::active_area)
243 , fMeanGhostKt (1e-100)
245 , fMedUsedForBgSub (0)
246 , fUseArea4Vector (kFALSE)
249 #ifdef FASTJET_VERSION
252 , fConstituentSubtractor (0)
253 , fGenSubtractorInfoJetMass ( )
254 , fGenSubtractorInfoGRNum ( )
255 , fGenSubtractorInfoGRDen ( )
256 , fGenSubtractorInfoJetAngularity ( )
257 , fGenSubtractorInfoJetpTD ( )
258 , fGenSubtractorInfoJetCircularity( )
259 , fGenSubtractorInfoJetSigma2()
260 , fGenSubtractorInfoJetConstituent ( )
261 , fGenSubtractorInfoJetLeSub ( )
262 , fGenSubtractorInfoJet1subjettiness_kt ( )
263 , fGenSubtractorInfoJet2subjettiness_kt ( )
264 , fGenSubtractorInfoJet3subjettiness_kt ( )
265 , fGenSubtractorInfoJetOpeningAngle_kt ( )
267 , fDoFilterArea (false)
268 , fLegacyMode (false)
269 , fUseExternalBkg (false)
277 , fGRDenominatorSub()
302 #ifdef FASTJET_VERSION
303 if (fBkrdEstimator) {
delete fBkrdEstimator; fBkrdEstimator = NULL; }
304 if (fGenSubtractor) {
delete fGenSubtractor; fGenSubtractor = NULL; }
305 if (fConstituentSubtractor) {
delete fConstituentSubtractor; fConstituentSubtractor = NULL; }
306 if (fSoftDrop) {
delete fSoftDrop; fSoftDrop = NULL;}
366 fastjet::PseudoJet inVec(px, py, pz, E);
370 inVec.set_user_index(index);
384 fj::PseudoJet inVec = vec;
388 inVec.set_user_index(index);
402 for (
UInt_t i = 0; i < vecs.size(); ++i) {
403 fj::PseudoJet inVec = vecs[i];
404 if (offsetIndex > -99999)
416 fastjet::PseudoJet inVec(px, py, pz, E);
418 if (index > -99999) {
419 inVec.set_user_index(index);
438 AliError(Form(
"[e] ::GetJetArea wrong index: %d",idx));
452 AliError(Form(
"[e] ::GetFilteredJetArea wrong index: %d",idx));
461 fastjet::PseudoJet retval;
465 AliError(Form(
"[e] ::GetJetArea wrong index: %d",idx));
474 fastjet::PseudoJet retval;
478 AliError(Form(
"[e] ::GetFilteredJetArea wrong index: %d",idx));
490 if (kTRUE == sorted) {
509 std::vector<fastjet::PseudoJet>
514 std::vector<fastjet::PseudoJet> retval;
519 AliError(Form(
"[e] ::GetJetConstituents wrong index: %d",idx));
526 std::vector<fastjet::PseudoJet>
531 std::vector<fastjet::PseudoJet> retval;
537 AliError(Form(
"[e] ::GetFilteredJetConstituents wrong index: %d",idx));
550 AliError(
"[e] Run the jfinder first.");
559 std::vector<fastjet::PseudoJet> input_jets = sorted_by_pt(
fClustSeq->inclusive_jets());
560 input_jets.erase(input_jets.begin(), input_jets.begin() +
remove);
564 }
catch (fj::Error) {
565 AliError(
" [w] FJ Exception caught.");
593 #ifndef FASTJET_VERSION
599 if (
fAlgor == fj::plugin_algorithm) {
619 AliError(
"[e] Unrecognized plugin number!");
627 }
catch (fj::Error) {
628 AliError(
" [w] FJ Exception caught.");
633 #ifdef FASTJET_VERSION
634 fBkrdEstimator =
new fj::JetMedianBackgroundEstimator(fj::SelectorAbsRapMax(
fMaxRap));
662 }
catch (fj::Error) {
663 AliError(
" [w] FJ Exception caught.");
675 }
catch (fj::Error) {
676 AliError(
" [w] FJ Exception caught.");
691 #ifdef FASTJET_VERSION
692 std::cout <<
"WARNING! Setting FastJet in legacy mode" << std::endl;
694 if (fBkrdEstimator) {
695 fBkrdEstimator->set_provide_fj2_sigma(kTRUE);
696 fBkrdEstimator->set_use_area_4vector(kFALSE);
723 AliError(
" [w] FJ Exception caught.");
733 if (0.0 == median_pt) {
762 #ifdef FASTJET_VERSION
766 AliJetShapeMass shapeMass;
769 fGenSubtractorInfoJetMass.clear();
771 fj::contrib::GenericSubtractorInfo info;
773 double subtracted_shape = (*fGenSubtractor)(shapeMass,
fInclusiveJets[i], info);
774 fGenSubtractorInfoJetMass.push_back(info);
783 #ifdef FASTJET_VERSION
795 AliJetShapeGRNum shapeGRNum(r,
fDRStep);
796 AliJetShapeGRDen shapeGRDen(r,
fDRStep);
799 fGenSubtractorInfoGRNum.clear();
800 fGenSubtractorInfoGRDen.clear();
801 fj::contrib::GenericSubtractorInfo infoNum;
802 fj::contrib::GenericSubtractorInfo infoDen;
804 double sub_num = (*fGenSubtractor)(shapeGRNum,
fInclusiveJets[ijet], infoNum);
805 double sub_den = (*fGenSubtractor)(shapeGRDen, fInclusiveJets[ijet], infoDen);
807 fGenSubtractorInfoGRNum.push_back(infoNum);
808 fGenSubtractorInfoGRDen.push_back(infoDen);
820 #ifdef FASTJET_VERSION
824 AliJetShapeAngularity shapeAngularity;
827 fGenSubtractorInfoJetAngularity.clear();
829 fj::contrib::GenericSubtractorInfo infoAng;
831 double subtracted_shape = (*fGenSubtractor)(shapeAngularity,
fInclusiveJets[i], infoAng);
832 fGenSubtractorInfoJetAngularity.push_back(infoAng);
840 #ifdef FASTJET_VERSION
844 AliJetShapepTD shapepTD;
847 fGenSubtractorInfoJetpTD.clear();
849 fj::contrib::GenericSubtractorInfo infopTD;
851 double subtracted_shape = (*fGenSubtractor)(shapepTD,
fInclusiveJets[i], infopTD);
852 fGenSubtractorInfoJetpTD.push_back(infopTD);
860 #ifdef FASTJET_VERSION
864 AliJetShapeCircularity shapecircularity;
867 fGenSubtractorInfoJetCircularity.clear();
869 fj::contrib::GenericSubtractorInfo infoCirc;
871 double subtracted_shape = (*fGenSubtractor)(shapecircularity,
fInclusiveJets[i], infoCirc);
872 fGenSubtractorInfoJetCircularity.push_back(infoCirc);
880 #ifdef FASTJET_VERSION
884 AliJetShapeSigma2 shapesigma2;
887 fGenSubtractorInfoJetSigma2.clear();
889 fj::contrib::GenericSubtractorInfo infoSigma;
891 double subtracted_shape = (*fGenSubtractor)(shapesigma2,
fInclusiveJets[i], infoSigma);
892 fGenSubtractorInfoJetSigma2.push_back(infoSigma);
900 #ifdef FASTJET_VERSION
904 AliJetShapeConstituent shapeconst;
907 fGenSubtractorInfoJetConstituent.clear();
909 fj::contrib::GenericSubtractorInfo infoConst;
911 double subtracted_shape = (*fGenSubtractor)(shapeconst,
fInclusiveJets[i], infoConst);
912 fGenSubtractorInfoJetConstituent.push_back(infoConst);
921 #ifdef FASTJET_VERSION
925 AliJetShapeLeSub shapeLeSub;
928 fGenSubtractorInfoJetLeSub.clear();
930 fj::contrib::GenericSubtractorInfo infoLeSub;
932 double subtracted_shape = (*fGenSubtractor)(shapeLeSub,
fInclusiveJets[i], infoLeSub);
933 fGenSubtractorInfoJetLeSub.push_back(infoLeSub);
942 #ifdef FASTJET_VERSION
946 AliJetShape1subjettiness_kt shape1subjettiness_kt;
949 fGenSubtractorInfoJet1subjettiness_kt.clear();
951 fj::contrib::GenericSubtractorInfo info1subjettiness_kt;
953 double subtracted_shape = (*fGenSubtractor)(shape1subjettiness_kt,
fInclusiveJets[i], info1subjettiness_kt);
954 fGenSubtractorInfoJet1subjettiness_kt.push_back(info1subjettiness_kt);
963 #ifdef FASTJET_VERSION
967 AliJetShape2subjettiness_kt shape2subjettiness_kt;
970 fGenSubtractorInfoJet2subjettiness_kt.clear();
972 fj::contrib::GenericSubtractorInfo info2subjettiness_kt;
974 double subtracted_shape = (*fGenSubtractor)(shape2subjettiness_kt,
fInclusiveJets[i], info2subjettiness_kt);
975 fGenSubtractorInfoJet2subjettiness_kt.push_back(info2subjettiness_kt);
984 #ifdef FASTJET_VERSION
988 AliJetShape3subjettiness_kt shape3subjettiness_kt;
991 fGenSubtractorInfoJet3subjettiness_kt.clear();
993 fj::contrib::GenericSubtractorInfo info3subjettiness_kt;
995 double subtracted_shape = (*fGenSubtractor)(shape3subjettiness_kt,
fInclusiveJets[i], info3subjettiness_kt);
996 fGenSubtractorInfoJet3subjettiness_kt.push_back(info3subjettiness_kt);
1005 #ifdef FASTJET_VERSION
1009 AliJetShapeOpeningAngle_kt shapeOpeningAngle_kt;
1012 fGenSubtractorInfoJetOpeningAngle_kt.clear();
1014 fj::contrib::GenericSubtractorInfo infoOpeningAngle_kt;
1016 double subtracted_shape = (*fGenSubtractor)(shapeOpeningAngle_kt,
fInclusiveJets[i], infoOpeningAngle_kt);
1017 fGenSubtractorInfoJetOpeningAngle_kt.push_back(infoOpeningAngle_kt);
1026 #ifdef FASTJET_VERSION
1027 CreateConstituentSub();
1034 fj::PseudoJet subtracted_jet(0.,0.,0.,0.);
1039 if(fConstituentSubtractor) {
delete fConstituentSubtractor; fConstituentSubtractor = NULL; }
1048 #ifdef FASTJET_VERSION
1058 fj::PseudoJet groomed_jet(0.,0.,0.,0.);
1061 groomed_jet.set_user_index(i);
1062 if(groomed_jet!=0)
fGroomedJets.push_back(groomed_jet);
1066 if(fSoftDrop) {
delete fSoftDrop; fSoftDrop = NULL; }
1073 Int_t AliFJWrapper::CreateSoftDrop() {
1075 #ifdef FASTJET_VERSION
1076 if (fSoftDrop) {
delete fSoftDrop; }
1078 fSoftDrop =
new fj::contrib::SoftDrop(
fBeta,
fZcut);
1086 Int_t AliFJWrapper::CreateGenSub() {
1088 #ifdef FASTJET_VERSION
1089 if (fGenSubtractor) {
delete fGenSubtractor; }
1092 { fGenSubtractor =
new fj::contrib::GenericSubtractor(
fRho,
fRhom); }
1095 fGenSubtractor =
new fj::contrib::GenericSubtractor(fBkrdEstimator);
1096 #if FASTJET_VERSION_NUMBER >= 30100
1097 fGenSubtractor->set_common_bge_for_rho_and_rhom();
1106 Int_t AliFJWrapper::CreateConstituentSub() {
1108 #ifdef FASTJET_VERSION
1109 if (fConstituentSubtractor) {
delete fConstituentSubtractor; }
1114 else { fConstituentSubtractor =
new fj::contrib::ConstituentSubtractor(fBkrdEstimator); }
1125 std::string opt(option);
1127 if (!opt.compare(
"kt"))
fAlgor = fj::kt_algorithm;
1128 if (!opt.compare(
"antikt"))
fAlgor = fj::antikt_algorithm;
1129 if (!opt.compare(
"cambridge"))
fAlgor = fj::cambridge_algorithm;
1130 if (!opt.compare(
"genkt"))
fAlgor = fj::genkt_algorithm;
1131 if (!opt.compare(
"cambridge_passive"))
fAlgor = fj::cambridge_for_passive_algorithm;
1132 if (!opt.compare(
"genkt_passive"))
fAlgor = fj::genkt_for_passive_algorithm;
1133 if (!opt.compare(
"ee_kt"))
fAlgor = fj::ee_kt_algorithm;
1134 if (!opt.compare(
"ee_genkt"))
fAlgor = fj::ee_genkt_algorithm;
1135 if (!opt.compare(
"plugin"))
fAlgor = fj::plugin_algorithm;
1143 std::string opt(option);
1145 if (!opt.compare(
"active"))
fAreaType = fj::active_area;
1146 if (!opt.compare(
"invalid"))
fAreaType = fj::invalid_area;
1147 if (!opt.compare(
"active_area_explicit_ghosts"))
fAreaType = fj::active_area_explicit_ghosts;
1148 if (!opt.compare(
"one_ghost_passive"))
fAreaType = fj::one_ghost_passive_area;
1149 if (!opt.compare(
"passive"))
fAreaType = fj::passive_area;
1150 if (!opt.compare(
"voronoi"))
fAreaType = fj::voronoi_area;
1160 std::string opt(option);
1162 if (!opt.compare(
"BIpt"))
fScheme = fj::BIpt_scheme;
1163 if (!opt.compare(
"BIpt2"))
fScheme = fj::BIpt2_scheme;
1164 if (!opt.compare(
"E"))
fScheme = fj::E_scheme;
1165 if (!opt.compare(
"pt"))
fScheme = fj::pt_scheme;
1166 if (!opt.compare(
"pt2"))
fScheme = fj::pt2_scheme;
1167 if (!opt.compare(
"Et"))
fScheme = fj::Et_scheme;
1168 if (!opt.compare(
"Et2"))
fScheme = fj::Et2_scheme;
1176 std::string opt(option);
1178 if (!opt.compare(
"Best"))
fStrategy = fj::Best;
1179 if (!opt.compare(
"N2MinHeapTiled"))
fStrategy = fj::N2MinHeapTiled;
1180 if (!opt.compare(
"N2Tiled"))
fStrategy = fj::N2Tiled;
1181 if (!opt.compare(
"N2PoorTiled"))
fStrategy = fj::N2PoorTiled;
1182 if (!opt.compare(
"N2Plain"))
fStrategy = fj::N2Plain;
1183 if (!opt.compare(
"N3Dumb"))
fStrategy = fj::N3Dumb;
1184 if (!opt.compare(
"NlnN"))
fStrategy = fj::NlnN;
1185 if (!opt.compare(
"NlnN3pi"))
fStrategy = fj::NlnN3pi;
1186 if (!opt.compare(
"NlnN4pi"))
fStrategy = fj::NlnN4pi;
1187 if (!opt.compare(
"NlnNCam4pi"))
fStrategy = fj::NlnNCam4pi;
1188 if (!opt.compare(
"NlnNCam2pi2R"))
fStrategy = fj::NlnNCam2pi2R;
1189 if (!opt.compare(
"NlnNCam"))
fStrategy = fj::NlnNCam;
1190 if (!opt.compare(
"plugin"))
fStrategy = fj::plugin_strategy;
1203 }
catch (fj::Error) {
1204 AliError(
" [w] FJ Exception caught.");
1211 std::vector<fastjet::PseudoJet> SubJet_Axes;
1212 fj::PseudoJet SubJet1_Axis;
1213 fj::PseudoJet SubJet2_Axis;
1214 std::vector<fastjet::PseudoJet> SubJets;
1215 fj::PseudoJet SubJet1;
1216 fj::PseudoJet SubJet2;
1219 fj::contrib::Nsubjettiness nSub(N, fj::contrib::KT_Axes(), fj::contrib::NormalizedMeasure(Beta,
fR*2));
1221 SubJet_Axes=nSub.currentAxes();
1222 SubJets=nSub.currentSubjets();
1224 else if (Measure==1){
1225 fj::contrib::Nsubjettiness nSub(N, fj::contrib::KT_Axes(), fj::contrib::UnnormalizedMeasure(Beta));
1227 SubJet_Axes=nSub.currentAxes();
1228 SubJets=nSub.currentSubjets();
1231 else if (Algorithm==1) {
1232 fj::contrib::Nsubjettiness nSub(N, fj::contrib::CA_Axes(), fj::contrib::NormalizedMeasure(Beta,
fR));
1234 SubJet_Axes=nSub.currentAxes();
1235 SubJets=nSub.currentSubjets();
1237 else if (Algorithm==2){
1238 fj::contrib::Nsubjettiness nSub(N, fj::contrib::AntiKT_Axes(Radius), fj::contrib::NormalizedMeasure(Beta,
fR));
1240 SubJet_Axes=nSub.currentAxes();
1241 SubJets=nSub.currentSubjets();
1243 else if (Algorithm==3) {
1244 fj::contrib::Nsubjettiness nSub(N, fj::contrib::WTA_KT_Axes(), fj::contrib::NormalizedMeasure(Beta,
fR));
1246 SubJet_Axes=nSub.currentAxes();
1247 SubJets=nSub.currentSubjets();
1249 else if (Algorithm==4) {
1250 fj::contrib::Nsubjettiness nSub(N, fj::contrib::WTA_CA_Axes(), fj::contrib::NormalizedMeasure(Beta,
fR));
1252 SubJet_Axes=nSub.currentAxes();
1253 SubJets=nSub.currentSubjets();
1255 else if (Algorithm==5){
1256 fj::contrib::Nsubjettiness nSub(N, fj::contrib::OnePass_KT_Axes(), fj::contrib::NormalizedMeasure(Beta,
fR));
1258 SubJet_Axes=nSub.currentAxes();
1259 SubJets=nSub.currentSubjets();
1261 else if (Algorithm==6){
1262 fj::contrib::Nsubjettiness nSub(N, fj::contrib::OnePass_CA_Axes(), fj::contrib::NormalizedMeasure(Beta,
fR));
1264 SubJet_Axes=nSub.currentAxes();
1265 SubJets=nSub.currentSubjets();
1267 else if (Algorithm==7){
1268 fj::contrib::Nsubjettiness nSub(N, fj::contrib::OnePass_AntiKT_Axes(Radius), fj::contrib::NormalizedMeasure(Beta,
fR));
1270 SubJet_Axes=nSub.currentAxes();
1271 SubJets=nSub.currentSubjets();
1273 else if (Algorithm==8){
1274 fj::contrib::Nsubjettiness nSub(N, fj::contrib::OnePass_WTA_KT_Axes(), fj::contrib::NormalizedMeasure(Beta,
fR));
1276 SubJet_Axes=nSub.currentAxes();
1277 SubJets=nSub.currentSubjets();
1279 else if (Algorithm==9){
1280 fj::contrib::Nsubjettiness nSub(N, fj::contrib::OnePass_WTA_CA_Axes(), fj::contrib::NormalizedMeasure(Beta,
fR));
1282 SubJet_Axes=nSub.currentAxes();
1283 SubJets=nSub.currentSubjets();
1285 else if (Algorithm==10){
1286 fj::contrib::Nsubjettiness nSub(N, fj::contrib::MultiPass_Axes(100), fj::contrib::NormalizedMeasure(Beta,
fR));
1288 SubJet_Axes=nSub.currentAxes();
1289 SubJets=nSub.currentSubjets();
1294 SubJet1_Axis=SubJet_Axes[0];
1295 Double_t SubJet1_Eta=SubJet1_Axis.pseudorapidity();
1297 Double_t SubJet1_Phi=SubJet1_Axis.phi();
1298 if(SubJet1_Phi < -1*TMath::Pi()) SubJet1_Phi += (2*TMath::Pi());
1299 else if (SubJet1_Phi > TMath::Pi()) SubJet1_Phi -= (2*TMath::Pi());
1302 if (SubJet_Axes.size()>1){
1303 SubJet2_Axis=SubJet_Axes[1];
1304 SubJet2_Eta=SubJet2_Axis.pseudorapidity();
1305 SubJet2_Phi=SubJet2_Axis.phi();
1306 if(SubJet2_Phi < -1*TMath::Pi()) SubJet2_Phi += (2*TMath::Pi());
1307 else if (SubJet2_Phi > TMath::Pi()) SubJet2_Phi -= (2*TMath::Pi());
1308 DeltaPhi=SubJet1_Phi-SubJet2_Phi;
1309 if(DeltaPhi < -1*TMath::Pi()) DeltaPhi += (2*TMath::Pi());
1310 else if (DeltaPhi > TMath::Pi()) DeltaPhi -= (2*TMath::Pi());
1315 Double_t SubJet1Eta=SubJet1.pseudorapidity();
1318 if(SubJet1Phi < -1*TMath::Pi()) SubJet1Phi += (2*TMath::Pi());
1319 else if (SubJet1Phi > TMath::Pi()) SubJet1Phi -= (2*TMath::Pi());
1322 if (SubJet_Axes.size()>1){
1324 SubJet2Eta=SubJet2.pseudorapidity();
1325 SubJet2Phi=SubJet2.phi();
1326 if(SubJet2Phi < -1*TMath::Pi()) SubJet2Phi += (2*TMath::Pi());
1327 else if (SubJet2Phi > TMath::Pi()) SubJet2Phi -= (2*TMath::Pi());
1328 DeltaPhiSubJets=SubJet1Phi-SubJet2Phi;
1329 if(DeltaPhiSubJets < -1*TMath::Pi()) DeltaPhiSubJets += (2*TMath::Pi());
1330 else if (DeltaPhiSubJets > TMath::Pi()) DeltaPhiSubJets -= (2*TMath::Pi());
1334 fj::contrib::SoftDrop Soft_Drop(Beta_SD,ZCut);
1335 Soft_Drop.set_tagging_mode();
1337 if (Soft_Dropped_Jet==0) Result_SoftDrop=-1;
1339 if (Option==3) Result_SoftDrop=Soft_Dropped_Jet.structure_of<fj::contrib::SoftDrop>().delta_R();
1340 if (Option==4) Result_SoftDrop=Soft_Dropped_Jet.structure_of<fj::contrib::SoftDrop>().symmetry();
1343 if (Option==0)
return Result;
1344 else if (Option==1 && SubJet_Axes.size()>1 && N==2)
return TMath::Sqrt(TMath::Power(SubJet1_Eta-SubJet2_Eta,2)+TMath::Power(DeltaPhi,2));
1345 else if (Option==2 && SubJet_Axes.size()>1 && N==2)
return TMath::Sqrt(TMath::Power(SubJet1_Eta-SubJet2_Eta,2)+TMath::Power(DeltaPhi,2));
1346 else if ((Option==3 || Option==4) && N==2)
return Result_SoftDrop;
1347 else if (Option==5 && SubJets.size()>1 && N==2)
return SubJet1.perp();
1348 else if (Option==6 && SubJets.size()>1 && N==2)
return SubJet2.perp();
1349 else if (Option==7 && SubJets.size()>1 && N==2)
return TMath::Sqrt(TMath::Power(SubJet1Eta-SubJet2Eta,2)+TMath::Power(DeltaPhiSubJets,2));
1358 std::vector<fastjet::PseudoJet> SubJet_Axes;
1359 fj::PseudoJet SubJet1_Axis;
1360 fj::PseudoJet SubJet2_Axis;
1362 fj::contrib::Nsubjettiness nSub(N, fj::contrib::KT_Axes(), fj::contrib::NormalizedMeasure(Beta,JetR));
1363 Result= nSub.result(jet);
1364 SubJet_Axes=nSub.currentAxes();
1366 else if (Algorithm==1) {
1367 fj::contrib::Nsubjettiness nSub(N, fj::contrib::CA_Axes(), fj::contrib::NormalizedMeasure(Beta,JetR));
1368 Result= nSub.result(jet);
1369 SubJet_Axes=nSub.currentAxes();
1371 else if (Algorithm==2){
1372 fj::contrib::Nsubjettiness nSub(N, fj::contrib::AntiKT_Axes(Radius), fj::contrib::NormalizedMeasure(Beta,JetR));
1373 Result= nSub.result(jet);
1374 SubJet_Axes=nSub.currentAxes();
1376 else if (Algorithm==3) {
1377 fj::contrib::Nsubjettiness nSub(N, fj::contrib::WTA_KT_Axes(), fj::contrib::NormalizedMeasure(Beta,JetR));
1378 Result= nSub.result(jet);
1379 SubJet_Axes=nSub.currentAxes();
1381 else if (Algorithm==4) {
1382 fj::contrib::Nsubjettiness nSub(N, fj::contrib::WTA_CA_Axes(), fj::contrib::NormalizedMeasure(Beta,JetR));
1383 Result= nSub.result(jet);
1384 SubJet_Axes=nSub.currentAxes();
1386 else if (Algorithm==5){
1387 fj::contrib::Nsubjettiness nSub(N, fj::contrib::OnePass_KT_Axes(), fj::contrib::NormalizedMeasure(Beta,JetR));
1388 Result= nSub.result(jet);
1389 SubJet_Axes=nSub.currentAxes();
1391 else if (Algorithm==6){
1392 fj::contrib::Nsubjettiness nSub(N, fj::contrib::OnePass_CA_Axes(), fj::contrib::NormalizedMeasure(Beta,JetR));
1393 Result= nSub.result(jet);
1394 SubJet_Axes=nSub.currentAxes();
1396 else if (Algorithm==7){
1397 fj::contrib::Nsubjettiness nSub(N, fj::contrib::OnePass_AntiKT_Axes(Radius), fj::contrib::NormalizedMeasure(Beta,JetR));
1398 Result= nSub.result(jet);
1399 SubJet_Axes=nSub.currentAxes();
1401 else if (Algorithm==8){
1402 fj::contrib::Nsubjettiness nSub(N, fj::contrib::OnePass_WTA_KT_Axes(), fj::contrib::NormalizedMeasure(Beta,JetR));
1403 Result= nSub.result(jet);
1404 SubJet_Axes=nSub.currentAxes();
1406 else if (Algorithm==9){
1407 fj::contrib::Nsubjettiness nSub(N, fj::contrib::OnePass_WTA_CA_Axes(), fj::contrib::NormalizedMeasure(Beta,JetR));
1408 Result= nSub.result(jet);
1409 SubJet_Axes=nSub.currentAxes();
1411 else if (Algorithm==10){
1412 fj::contrib::Nsubjettiness nSub(N, fj::contrib::MultiPass_Axes(100), fj::contrib::NormalizedMeasure(Beta,JetR));
1413 Result= nSub.result(jet);
1414 SubJet_Axes=nSub.currentAxes();
1417 SubJet1_Axis=SubJet_Axes[0];
1418 Double_t SubJet1_Eta=SubJet1_Axis.pseudorapidity();
1420 Double_t SubJet1_Phi=SubJet1_Axis.phi();
1421 if(SubJet1_Phi < -1*TMath::Pi()) SubJet1_Phi += (2*TMath::Pi());
1422 else if (SubJet1_Phi > TMath::Pi()) SubJet1_Phi -= (2*TMath::Pi());
1425 if (SubJet_Axes.size()>1){
1426 SubJet2_Axis=SubJet_Axes[1];
1427 SubJet2_Eta=SubJet2_Axis.pseudorapidity();
1428 SubJet2_Phi=SubJet2_Axis.phi();
1429 if(SubJet2_Phi < -1*TMath::Pi()) SubJet2_Phi += (2*TMath::Pi());
1430 else if (SubJet2_Phi > TMath::Pi()) SubJet2_Phi -= (2*TMath::Pi());
1431 DeltaPhi=SubJet1_Phi-SubJet2_Phi;
1432 if(DeltaPhi < -1*TMath::Pi()) DeltaPhi += (2*TMath::Pi());
1433 else if (DeltaPhi > TMath::Pi()) DeltaPhi -= (2*TMath::Pi());
1437 if (Option==0)
return Result;
1438 else if (Option==1 && SubJet_Axes.size()>1 && N==2)
return TMath::Sqrt(TMath::Power(SubJet1_Eta-SubJet2_Eta,2)+TMath::Power(DeltaPhi,2));
1439 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)
fastjet::PseudoJet GetJetAreaVector(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 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
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)
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
AliFJWrapper & operator=(const AliFJWrapper &wrapper)
Double_t GetJetArea(UInt_t idx) const
std::vector< double > fSubtractedJetsPt
fastjet::JetDefinition::Plugin * fPlugin
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)
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 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
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()
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