1 |
#ifndef FJet_H
|
2 |
#define FJet_H
|
3 |
|
4 |
#include <vector>
|
5 |
#include "TObjArray.h"
|
6 |
#include "TClonesArray.h"
|
7 |
#include "../include/Objects.h"
|
8 |
#include "fastjet/JetDefinition.hh"
|
9 |
#include "fastjet/AreaDefinition.hh"
|
10 |
#include "fastjet/ClusterSequenceArea.hh"
|
11 |
|
12 |
using namespace std;
|
13 |
|
14 |
class FJet{
|
15 |
|
16 |
public:
|
17 |
|
18 |
enum EStrategy{eN2Plain = 0, eN2Tiled, eN2MinHeapTiled, eNlnN, eNlnNCam, eBest};
|
19 |
enum EAreaType{eActive = 0, eActiveGhostsInJets, ePassiveOneGhost, ePassive, eVoronoi};
|
20 |
|
21 |
FJet();
|
22 |
|
23 |
~FJet();
|
24 |
|
25 |
void FindJets(const vector<Particle*> parts, vector<Jet*>& jets);
|
26 |
void PrepareInput(vector<GenParticle> genparts, vector<Particle*>& out);
|
27 |
vector<int> GetPartJetAssoc();
|
28 |
|
29 |
void Init();
|
30 |
void Print(const char* usertitle);
|
31 |
|
32 |
// setters
|
33 |
void SetJetAlgorithm(fastjet::JetAlgorithm algo);
|
34 |
void SetRecombScheme(fastjet::RecombinationScheme recom);
|
35 |
void SetRadius(double radius);
|
36 |
void SetPtCut(double ptmin){fPtMin = ptmin;}
|
37 |
|
38 |
void CalculateArea(bool flag = true){bUseArea = flag; InitArea();}
|
39 |
void InitArea();
|
40 |
void SetAreaType(EAreaType type);
|
41 |
void SetGhostMaxRap(double max_rap){fGhostSpec->set_ghost_maxrap(max_rap); InitArea();}
|
42 |
void SetGhostRepeat(int repeat){fGhostSpec->set_repeat(repeat); InitArea();}
|
43 |
void SetGhostArea(double area){fGhostSpec->set_ghost_area(area); InitArea();}
|
44 |
void SetGhostGridScatter(double scatter){fGhostSpec->set_grid_scatter(scatter); InitArea();}
|
45 |
void SetGhostKtScatter(double scatter){fGhostSpec->set_kt_scatter(scatter); InitArea();}
|
46 |
void SetGhostMeanKt(double meankt){fGhostSpec->set_mean_ghost_kt(meankt); InitArea();}
|
47 |
void SetVoronoiEffR(double factor){if (fVoronoiSpec){delete fVoronoiSpec;} fVoronoiSpec = new fastjet::VoronoiAreaSpec(factor); InitArea();}
|
48 |
|
49 |
// getters
|
50 |
fastjet::JetAlgorithm GetJetAlgorithm();
|
51 |
fastjet::RecombinationScheme GetRecombScheme();
|
52 |
double GetExclusiveDmerge(int Njet);
|
53 |
double GetRadius(){return fR;}
|
54 |
double GetPtCut(){return fPtMin;}
|
55 |
|
56 |
private:
|
57 |
|
58 |
// store the jetfinder
|
59 |
fastjet::ClusterSequence* fJetFinder; //! new object every time fastjet is called
|
60 |
|
61 |
// general fastjet settings
|
62 |
fastjet::JetAlgorithm fJetAlgo; //! the required jet algorithm
|
63 |
fastjet::RecombinationScheme fRecombScheme; //! the required recombination scheme
|
64 |
fastjet::Strategy fStrategy; //! the strategy FastJet uses
|
65 |
double fR; //! jet finder radius
|
66 |
double fPtMin; //! Pt_min of clustered jets
|
67 |
|
68 |
fastjet::JetDefinition* fJetDef; //! the jet definition
|
69 |
|
70 |
vector<int> fpart_jet_assoc; //! indices of jet constituents
|
71 |
|
72 |
// area utilities:
|
73 |
bool bUseArea; //! calculate area? (default: false)
|
74 |
fastjet::AreaDefinition* fAreaDef; //! area definition
|
75 |
fastjet::GhostedAreaSpec* fGhostSpec; //! ghosted area specifications
|
76 |
fastjet::VoronoiAreaSpec* fVoronoiSpec; //! voronoi area specifications
|
77 |
fastjet::AreaType fGhostAreaType; //! the requested area type
|
78 |
bool bVoronoiArea; //! calculate voronoi area? (default: false)
|
79 |
|
80 |
};
|
81 |
|
82 |
|
83 |
#endif
|