4#include "GaudiKernel/IInterface.h"
5#include "GaudiKernel/Kernel.h"
6#include "GaudiKernel/Service.h"
7#include "GaudiKernel/IDataProviderSvc.h"
8#include "CLHEP/Matrix/Vector.h"
9#include "CLHEP/Matrix/SymMatrix.h"
10#include "CLHEP/Geometry/Vector3D.h"
11#include "CLHEP/Geometry/Point3D.h"
30#ifndef ENABLE_BACKWARDS_COMPATIBILITY
35#ifndef ENABLE_BACKWARDS_COMPATIBILITY
43 MdcUtilitySvc(
const std::string& name, ISvcLocator* svcloc );
58 double doca(
int layer,
int cell,
const HepVector helix,
const HepSymMatrix errMat,
bool passCellRequired =
true,
bool doSag =
true)
const;
59 double doca(
int layer,
int cell,
HepPoint3D eastP,
HepPoint3D westP,
const HepVector helixBes,
const HepSymMatrix errMatBes,
bool passCellRequired =
true,
bool doSag =
true)
const;
60 double doca(
int layer,
int cell,
const MdcSWire* sWire,
const HepVector helixPat,
const HepSymMatrix errMatPat,
bool passCellRequired =
true)
const;
61 double docaPatPar(
int layer,
int cell,
const HepVector helixPat,
const HepSymMatrix errMatPat,
bool passCellRequired =
true,
bool doSag =
true)
const;
62 double docaPatPar(
int layer,
int cell,
HepPoint3D eastP,
HepPoint3D westP,
const HepVector helixBes,
const HepSymMatrix errMatBes,
bool passCellRequired =
true,
bool doSag =
true)
const;
63 double docaPatPar(
int layer,
int cell,
const MdcSWire* sWire,
const HepVector helixPat,
const HepSymMatrix errMatPat,
bool passCellRequired =
true)
const;
67 bool cellTrackPassedByPhi(
const HepVector helix,
int layer,
int& cellId_in,
int& cellId_out)
const;
69 bool cellTrackPassed(
const HepVector helix,
int layer,
int& cellId_in,
int& cellId_out)
const;
72 HepPoint3D Hel(
HepPoint3D piv,
double dr,
double phi0,
double Alpha_L,
double kappa,
double dz,
double dphi,
double tanl)
const;
75 double probab(
const int& ndof,
const double& chisq)
const;
86 const std::map<
int, std::map<MdcDigi*,Event::MdcMcHit*> > mdcMCAssociation,
91 const std::vector<MdcDigi*> mdcDigiVecInput,
92 std::map<
int,std::map<MdcDigi*,Event::MdcMcHit*> >& mdcMCAssociation);
96 int myOuterWire[43][288][2];
97 int myInnerWire[43][288][2];
98 double myWirePhi[43][288];
99 double dPhi(
double phi1,
double phi2);
**********INTEGER nmxhep !maximum number of particles DOUBLE PRECISION vhep INTEGER jdahep COMMON hepevt $ !serial number $ !number of particles $ !status code $ !particle ident KF $ !parent particles $ !childreen particles $ !four momentum
std::vector< MdcDigi * > MdcDigiVec
HepGeom::Point3D< double > HepPoint3D
HepGeom::Vector3D< double > HepVector3D
virtual double getReferField()=0
HepVector besPar2PatPar(const HepVector &helixPar) const
bool cellTrackPassedByPhi(const HepVector helix, int layer, int &cellId_in, int &cellId_out) const
virtual StatusCode initialize()
HepSymMatrix patErr2BesErr(const HepSymMatrix &err) const
HepPoint3D Hel(HepPoint3D piv, double dr, double phi0, double Alpha_L, double kappa, double dz, double dphi, double tanl) const
MdcDigiVec getMdcDigiVec() const
HepSymMatrix besErr2PatErr(const HepSymMatrix &err) const
float getChargeOfMcParticle(const Event::McParticle *mcParticle)
void getMdcMCAssoiciation(int trackIndex, const std::vector< MdcDigi * > mdcDigiVecInput, std::map< int, std::map< MdcDigi *, Event::MdcMcHit * > > &mdcMCAssociation)
Get association of MdcDigi and MdcMcHit according to track id.
bool cellTrackPassedByPhiPatPar(const HepVector helix, int layer, int &cellId_in, int &cellId_out) const
HepVector patPar2BesPar(const HepVector &helixPar) const
void getHelixOfMcParticle(const Event::McParticle *mcParticle, Helix &helix)
virtual StatusCode finalize()
void getMomPosOfMcParticle(const Event::McParticle *mcParticle, HepVector3D &pos, HepVector3D &mom)
double probab(const int &ndof, const double &chisq) const
double doca(int layer, int cell, const HepVector helix, const HepSymMatrix errMat, bool passCellRequired=true, bool doSag=true) const
int nLayerTrackPassed(const HepVector helix) const
bool cellTrackPassed(const HepVector helix, int layer, int &cellId_in, int &cellId_out) const
void getMdcDigiOnMcParticle(int trackIndex, const std::map< int, std::map< MdcDigi *, Event::MdcMcHit * > > mdcMCAssociation, MdcDigiVec &mdcDigiInput, MdcDigiVec &mdcDigiAssociated)
double p_cms(HepVector helix, int runNo, double mass) const
double docaPatPar(int layer, int cell, const HepVector helixPat, const HepSymMatrix errMatPat, bool passCellRequired=true, bool doSag=true) const
HepPoint3D pointOnHelixPatPar(const HepVector helixPat, int lay, int innerOrOuter) const
HepPoint3D pointOnHelix(const HepVector helixPar, int lay, int innerOrOuter) const
bool cellTrackPassedPatPar(const HepVector helix, int layer, int &cellId_in, int &cellId_out) const