30 #ifndef __FASTJET_COMPOSITEJET_STRUCTURE_HH__
31 #define __FASTJET_COMPOSITEJET_STRUCTURE_HH__
33 #include <fastjet/PseudoJet.hh>
34 #include <fastjet/PseudoJetStructureBase.hh>
37 #include <fastjet/JetDefinition.hh>
39 FASTJET_BEGIN_NAMESPACE
60 if (_area_4vector_ptr)
delete _area_4vector_ptr;
64 virtual std::string description()
const;
70 virtual bool has_constituents()
const;
78 virtual std::vector<PseudoJet> constituents(
const PseudoJet &jet)
const;
87 virtual std::vector<PseudoJet> pieces(
const PseudoJet &jet)
const;
93 virtual bool has_area()
const;
96 virtual double area(
const PseudoJet &reference)
const;
102 virtual double area_error(
const PseudoJet &reference)
const;
110 virtual bool is_pure_ghost(
const PseudoJet &reference)
const;
115 void set_area_information(
PseudoJet *area_4vector_ptr){
116 _area_4vector_ptr = area_4vector_ptr;
137 template<
typename T>
PseudoJet join(
const std::vector<PseudoJet> & pieces){
139 for (
unsigned int i=0; i<pieces.size(); i++){
144 T *cj_struct =
new T(pieces);
153 template<
typename T> PseudoJet join(
const PseudoJet & j1){
154 return join<T>(std::vector<PseudoJet>(1,j1));
159 template<
typename T> PseudoJet join(
const PseudoJet & j1,
const PseudoJet & j2){
160 std::vector<PseudoJet> pieces;
161 pieces.push_back(j1);
162 pieces.push_back(j2);
163 return join<T>(pieces);
168 template<
typename T> PseudoJet join(
const PseudoJet & j1,
const PseudoJet & j2,
169 const PseudoJet & j3){
170 std::vector<PseudoJet> pieces;
171 pieces.push_back(j1);
172 pieces.push_back(j2);
173 pieces.push_back(j3);
174 return join<T>(pieces);
179 template<
typename T> PseudoJet join(
const PseudoJet & j1,
const PseudoJet & j2,
180 const PseudoJet & j3,
const PseudoJet & j4){
181 std::vector<PseudoJet> pieces;
182 pieces.push_back(j1);
183 pieces.push_back(j2);
184 pieces.push_back(j3);
185 pieces.push_back(j4);
186 return join<T>(pieces);
200 template<
typename T>
PseudoJet join(
const std::vector<PseudoJet> & pieces,
203 if (pieces.size()>0){
205 for (
unsigned int i=1; i<pieces.size(); i++){
210 T *cj_struct =
new T(pieces, &recombiner);
218 template<
typename T> PseudoJet join(
const PseudoJet & j1,
219 const JetDefinition::Recombiner & recombiner){
220 return join<T>(std::vector<PseudoJet>(1,j1), recombiner);
225 template<
typename T> PseudoJet join(
const PseudoJet & j1,
const PseudoJet & j2,
226 const JetDefinition::Recombiner & recombiner){
227 std::vector<PseudoJet> pieces;
228 pieces.push_back(j1);
229 pieces.push_back(j2);
230 return join<T>(pieces, recombiner);
235 template<
typename T> PseudoJet join(
const PseudoJet & j1,
const PseudoJet & j2,
236 const PseudoJet & j3,
237 const JetDefinition::Recombiner & recombiner){
238 std::vector<PseudoJet> pieces;
239 pieces.push_back(j1);
240 pieces.push_back(j2);
241 pieces.push_back(j3);
242 return join<T>(pieces, recombiner);
247 template<
typename T> PseudoJet join(
const PseudoJet & j1,
const PseudoJet & j2,
248 const PseudoJet & j3,
const PseudoJet & j4,
249 const JetDefinition::Recombiner & recombiner){
250 std::vector<PseudoJet> pieces;
251 pieces.push_back(j1);
252 pieces.push_back(j2);
253 pieces.push_back(j3);
254 pieces.push_back(j4);
255 return join<T>(pieces, recombiner);
259 FASTJET_END_NAMESPACE
261 #endif // __FASTJET_MERGEDJET_STRUCTURE_HH__