8 #include "fastjet/config.h"
9 #include "fastjet/PseudoJet.hh"
10 #ifdef FASTJET_VERSION
11 #include "fastjet/FunctionOfPseudoJet.hh"
16 #include "TMatrixDSym.h"
17 #include "TMatrixDSymEigen.h"
22 #ifdef FASTJET_VERSION
24 class AliJetShapeMass :
public fastjet::FunctionOfPseudoJet<Double32_t>
27 virtual std::string description()
const{
return "jet mass";}
28 Double32_t result(
const fastjet::PseudoJet &jet)
const{
return jet.m();}
32 class AliJetShapeGRNum :
public fastjet::FunctionOfPseudoJet<Double32_t>
37 virtual std::string description()
const{
return "Numerator angular structure function";}
39 Double32_t result(
const fastjet::PseudoJet &jet)
const;
47 class AliJetShapeGRDen :
public fastjet::FunctionOfPseudoJet<Double32_t>
52 virtual std::string description()
const{
return "Denominator angular structure function";}
53 Double32_t result(
const fastjet::PseudoJet &jet)
const;
61 class AliJetShapeAngularity :
public fastjet::FunctionOfPseudoJet<Double32_t>{
63 virtual std::string description()
const{
return "Angularity:radial moment";}
64 Double32_t result(
const fastjet::PseudoJet &jet)
const;
68 class AliJetShapepTD :
public fastjet::FunctionOfPseudoJet<Double32_t>{
70 virtual std::string description()
const{
return "pTD";}
71 Double32_t result(
const fastjet::PseudoJet &jet)
const;
74 class AliJetShapeConstituent :
public fastjet::FunctionOfPseudoJet<Double32_t>{
76 virtual std::string description()
const{
return "constituents";}
77 Double_t result(
const fastjet::PseudoJet &jet)
const {
78 if (!jet.has_constituents())
81 std::vector<fastjet::PseudoJet> constits = jet.constituents();
82 num=1.*constits.size();
88 class AliJetShapeCircularity :
public fastjet::FunctionOfPseudoJet<Double32_t>{
90 virtual std::string description()
const{
return "circularity denominator";}
91 Double32_t result(
const fastjet::PseudoJet &jet)
const;
95 class AliJetShapeSigma2 :
public fastjet::FunctionOfPseudoJet<Double32_t>{
97 virtual std::string description()
const{
return "cms sigma2";}
98 Double32_t result(
const fastjet::PseudoJet &jet)
const;
102 class AliJetShapeLeSub :
public fastjet::FunctionOfPseudoJet<Double32_t>{
104 virtual std::string description()
const{
return "leading mins subleading";}
105 Double32_t result(
const fastjet::PseudoJet &jet)
const {
106 if (!jet.has_constituents())
108 std::vector<fastjet::PseudoJet> constits = jet.constituents();
109 std::vector<fastjet::PseudoJet> sortedconstits=sorted_by_pt(constits);
110 if(sortedconstits.size()<2)
return 0;
111 Double_t num=TMath::Abs(sortedconstits[0].perp()-sortedconstits[1].perp());
117 class AliJetShape1subjettiness_kt :
public fastjet::FunctionOfPseudoJet<Double32_t>{
119 virtual std::string description()
const{
return "1subJettiness kt exclusive";}
120 Double32_t result(
const fastjet::PseudoJet &jet)
const;
123 class AliJetShape2subjettiness_kt :
public fastjet::FunctionOfPseudoJet<Double32_t>{
125 virtual std::string description()
const{
return "2subJettiness kt exclusive";}
126 Double32_t result(
const fastjet::PseudoJet &jet)
const;
129 class AliJetShape3subjettiness_kt :
public fastjet::FunctionOfPseudoJet<Double32_t>{
131 virtual std::string description()
const{
return "3subJettiness kt exclusive";}
132 Double32_t result(
const fastjet::PseudoJet &jet)
const;
135 class AliJetShapeOpeningAngle_kt :
public fastjet::FunctionOfPseudoJet<Double32_t>{
137 virtual std::string description()
const{
return "Opening Angle of Subjet Axes kt exclusive";}
138 Double32_t result(
const fastjet::PseudoJet &jet)
const;
141 class AliJetShape1subjettiness_ca :
public fastjet::FunctionOfPseudoJet<Double32_t>{
143 virtual std::string description()
const{
return "1subJettiness ca exclusive";}
144 Double32_t result(
const fastjet::PseudoJet &jet)
const;
147 class AliJetShape2subjettiness_ca :
public fastjet::FunctionOfPseudoJet<Double32_t>{
149 virtual std::string description()
const{
return "2subJettiness ca exclusive";}
150 Double32_t result(
const fastjet::PseudoJet &jet)
const;
153 class AliJetShapeOpeningAngle_ca :
public fastjet::FunctionOfPseudoJet<Double32_t>{
155 virtual std::string description()
const{
return "Opening Angle of Subjet Axes ca exclusive";}
156 Double32_t result(
const fastjet::PseudoJet &jet)
const;
159 class AliJetShape1subjettiness_akt02 :
public fastjet::FunctionOfPseudoJet<Double32_t>{
161 virtual std::string description()
const{
return "1subJettiness akt02 exclusive";}
162 Double32_t result(
const fastjet::PseudoJet &jet)
const;
165 class AliJetShape2subjettiness_akt02 :
public fastjet::FunctionOfPseudoJet<Double32_t>{
167 virtual std::string description()
const{
return "2subJettiness akt02 exclusive";}
168 Double32_t result(
const fastjet::PseudoJet &jet)
const;
171 class AliJetShapeOpeningAngle_akt02 :
public fastjet::FunctionOfPseudoJet<Double32_t>{
173 virtual std::string description()
const{
return "Opening Angle of Subjet Axes akt02 exclusive";}
174 Double32_t result(
const fastjet::PseudoJet &jet)
const;
177 class AliJetShape1subjettiness_casd :
public fastjet::FunctionOfPseudoJet<Double32_t>{
179 virtual std::string description()
const{
return "1subJettiness ca sd exclusive";}
180 Double32_t result(
const fastjet::PseudoJet &jet)
const;
183 class AliJetShape2subjettiness_casd :
public fastjet::FunctionOfPseudoJet<Double32_t>{
185 virtual std::string description()
const{
return "2subJettiness ca sd exclusive";}
186 Double32_t result(
const fastjet::PseudoJet &jet)
const;
189 class AliJetShapeOpeningAngle_casd :
public fastjet::FunctionOfPseudoJet<Double32_t>{
191 virtual std::string description()
const{
return "Opening Angle of Subjet Axes ca sd exclusive";}
192 Double32_t result(
const fastjet::PseudoJet &jet)
const;