5 #include "EVENT/LCIO.h"
6 #include <EVENT/SimCalorimeterHit.h>
7 #include <EVENT/CalorimeterHit.h>
12 #include <UTIL/CellIDDecoder.h>
13 #include "Phys_Geom_Database.h"
14 #include <gsl/gsl_vector.h>
15 #include <gsl/gsl_matrix.h>
16 #include <gsl/gsl_blas.h>
17 #include <gsl/gsl_linalg.h>
18 #include <gsl/gsl_eigen.h>
19 #include <gsl/gsl_multifit_nlin.h>
20 #include <gsl/gsl_rng.h>
21 #include <gsl/gsl_sf_gamma.h>
22 #include <gsl/gsl_integration.h>
23 #include <gsl/gsl_sf_pow_int.h>
50 Superhit2(
float E,CalorimeterHit* chitin);
58 const float* getPosition(
int i);
62 CalorimeterHit* chit{};
92 vector <Superhit2*> neighbours{};
151 vector<Superhit2*> hits{};
155 vector<Tmpcl2*> daughters{};
159 vector<Tmpcl2*> parents{};
171 double direction[3]{};
175 double inteigen[3]{};
179 double inteigenvec[9]{};
194 Photon2(
double Ein,
double* pravac,
double* pocetak);
200 void Prob(CalorimeterHit* ch,
double cut,
double* out);
317 void CreateAllShits2(LCCollection* colt,CellIDDecoder<CalorimeterHit>&
id,vector<Superhit2*>* calo);
323 void TotalPrecalc2(vector<Superhit2*>* calo,CellIDDecoder<CalorimeterHit>&
id,
324 unsigned int nelem,
int Ncut);
328 void Precalc2(vector< Superhit2* >& shvec,
double r,
double z,
double cell,
double dist,
bool tip,
int stove,
int module,CellIDDecoder<CalorimeterHit>&
id);
333 void GridTransform2( CalorimeterHit* clh,
float& radius,
float& halfz,
float& cellsize,
float*X,
334 bool tip,
int stove,
int module,CellIDDecoder<CalorimeterHit>&
id);
340 void FindCores2(
Shitvec2* secal1, vector< Tmpclvec2>& bbb , vector <PROTSEED2> * prs2,
341 unsigned int N, vector<float> miipstep,
CoreCut2 Ccut);
345 void cluster5( vector<Superhit2*>* shv, vector<Tmpcl2*>* clv);
360 void PointOnLine3(
const double* X1,
const double* X2,
const float* X0,
double* Xline);
361 void PointOnLine22(
const double* Xstart,
const double* dir,
const float* X0,
double* Xline);
365 inline double Dot2(
double* X1,
double* X2);
double LinePointDistance2(double *X1, double *X2, double *X0)
container for keeping the parameters of the core fineder together
void LineCaloIntersectD2(double *X1, double *dir, double &d, double &zmax, double *X)
unsigned int MinHitSplit
minimal number of hits in i-th level cluster to be accepted for splitting of the core ...
double D_cl_cl2(Tmpcl2 *cl1, Tmpcl2 *cl2)
double b
Eestimate = a+b*Ecore , b parameter of this funcition.
void cluster5(vector< Superhit2 * > *shv, vector< Tmpcl2 * > *clv)
NN clustering.
void PointOnLine22(const double *Xstart, const double *dir, const float *X0, double *Xline)
void ModuleNormal2(double *X1, double &zmax, double *X0)
unsigned int MinHit0
minimal number of hits needed for 0-th level cluster to be accepted as a core candidate ...
void ClusterInCluster2(Tmpcl2 *cl, vector< Tmpcl2 * > &clv)
vector< Tmpcl2 * > Tmpclvec2
void FindCores2(Shitvec2 *secal1, vector< Tmpclvec2 > &bbb, vector< PROTSEED2 > *prs2, unsigned int N, vector< float > miipstep, CoreCut2 Ccut)
Global EM core finding function , iput is vector of superhits, array of Tmpcl vectors bbb for interna...
double Distcut
distance cut for core merging
void GridTransform2(CalorimeterHit *clh, float &radius, float &halfz, float &cellsize, float *X, bool tip, int stove, int module, CellIDDecoder< CalorimeterHit > &id)
Basic function for transformation of hit coordinates.
void TotalPrecalc2(vector< Superhit2 * > *calo, CellIDDecoder< CalorimeterHit > &id, unsigned int nelem, int Ncut)
Global precalculation function , iput is vector of superhits, ECAL decoder, number of hits...
Basic cluster class for reconstruction.
int level
level of cluster
double Emax
upper validity range of energy estimation funciton in GeV
void PointOnLine3(const double *X1, const double *X2, const float *X0, double *Xline)
double Emin
lower validity range of energy estimation funciton in GeV
double Coscut
angular cut for core merging (value of the cosine is stored not the angle!)
double Dot2(double *X1, double *X2)
container for storing the EM shower core candidates
double a
Eestimate = a+b*Ecore , a parameter of this funcition.
vector< Superhit2 * > Shitvec2
void LineCaloIntersect2(double *X1, double *X2, double &d, double &zmax, double *X)
void Precalc2(vector< Superhit2 * > &shvec, double r, double z, double cell, double dist, bool tip, int stove, int module, CellIDDecoder< CalorimeterHit > &id)
Precalculation function used internaly by TotalPrecalc.
double Rcut
fluctuation suppresion cut
double giveMeEEstimate2(int nivo, double Ecore, vector< CoreCalib2 > cc)
returns energy estimate for a given core , input int level, double core energy in GeV...
int level
level of the cluster
Tmpcl2 * cl
pointer to the cluster
Basic hit class for reconstruction, contains the calorimeter hit plus additional parameters.
void CreateCalibrationLDC00(vector< CoreCalib2 > *cc)
Example function for creation of the energy estimaiton table.
container for holding the numbers needed for energy estimation
bool active
flag to activate deactivate
void CreateAllShits2(LCCollection *colt, CellIDDecoder< CalorimeterHit > &id, vector< Superhit2 * > *calo)
Creation of superhits, input is ECAL collection ,it's decoded and pointer to resulting container for ...