|
ATLAS Offline Software
|
A concrete implementation of IInDetBeamSpotTool, using primary vertex information to determine the position of the beamspot using a chi2 and/or log-likelihood method.
More...
#include <InDetBeamSpotVertex.h>
|
| InDetBeamSpotVertex (const std::string &type, const std::string &name, const IInterface *parent) |
|
virtual | ~InDetBeamSpotVertex () |
|
| InDetBeamSpotVertex (const InDetBeamSpotVertex &rhs) |
|
virtual StatusCode | initialize () |
| Standard initialize. More...
|
|
virtual StatusCode | finalize () |
| Standard finalize. More...
|
|
virtual FitStatus | fit (std::vector< BeamSpot::VrtHolder > &) |
| Attempt a to find a solution of the beamspot. More...
|
|
virtual FitID | getFitID () const |
| A unique ID for the specific fit type. More...
|
|
IInDetBeamSpotTool * | Clone () |
|
double | getX (double z) const |
|
double | getY (double z) const |
|
double | getZ () const |
|
double | getErrX (double z) const |
|
double | getErrY (double z) const |
|
double | getErrZ () const |
|
double | getSigmaX (double) const |
|
double | getSigmaY (double) const |
|
double | getSigmaZ () const |
|
double | getErrSigmaX (double) const |
|
double | getErrSigmaY (double) const |
|
double | getErrSigmaZ () const |
|
double | getTiltX () const |
|
double | getTiltY () const |
|
double | getErrTiltX () const |
|
double | getErrTiltY () const |
|
double | getRhoXY () const |
|
double | getK () const |
|
double | getErrRhoXY () const |
|
double | getErrK () const |
|
double | getSigmaXY (double z) const |
|
double | getErrSigmaXY (double z) const |
|
CLHEP::HepSymMatrix | getCov (double z) const |
|
const CLHEP::HepVector & | getLLpos () const |
|
const CLHEP::HepSymMatrix & | getLLcov () const |
|
virtual std::map< std::string, double > | getCovMap () const |
|
virtual std::map< std::string, double > | getParamMap () const |
|
void | clear () |
|
ServiceHandle< StoreGateSvc > & | evtStore () |
| The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
const ServiceHandle< StoreGateSvc > & | evtStore () const |
| The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
const ServiceHandle< StoreGateSvc > & | detStore () const |
| The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
virtual StatusCode | sysInitialize () override |
| Perform system initialization for an algorithm. More...
|
|
virtual StatusCode | sysStart () override |
| Handle START transition. More...
|
|
virtual std::vector< Gaudi::DataHandle * > | inputHandles () const override |
| Return this algorithm's input handles. More...
|
|
virtual std::vector< Gaudi::DataHandle * > | outputHandles () const override |
| Return this algorithm's output handles. More...
|
|
Gaudi::Details::PropertyBase & | declareProperty (Gaudi::Property< T > &t) |
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleKey &hndl, const std::string &doc, const SG::VarHandleKeyType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleBase &hndl, const std::string &doc, const SG::VarHandleType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleKeyArray &hndArr, const std::string &doc, const SG::VarHandleKeyArrayType &) |
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, T &property, const std::string &doc, const SG::NotHandleType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, T &property, const std::string &doc="none") |
| Declare a new Gaudi property. More...
|
|
void | updateVHKA (Gaudi::Details::PropertyBase &) |
|
MsgStream & | msg () const |
|
MsgStream & | msg (const MSG::Level lvl) const |
|
bool | msgLvl (const MSG::Level lvl) const |
|
A concrete implementation of IInDetBeamSpotTool, using primary vertex information to determine the position of the beamspot using a chi2 and/or log-likelihood method.
Abstract class for all beamspot determination algorithms. Any class for finding the position of the beamspot needs to derive itself from this class.
Definition at line 32 of file InDetBeamSpotVertex.h.
◆ StoreGateSvc_t
◆ FitID
Beamspot determination type.
Enumerator |
---|
trackChi2 | |
trackChi2Widths | |
vertexLL | |
vertexChi2 | |
RooFitLL | |
unknown | |
Definition at line 51 of file IInDetBeamSpotTool.h.
◆ FitStatus
Internally used enum for fit status.
Useful for quick checks.
Enumerator |
---|
unsolved | |
problems | |
failed | |
successful | |
Definition at line 49 of file IInDetBeamSpotTool.h.
◆ InDetBeamSpotVertex() [1/2]
InDetBeamSpotVertex::InDetBeamSpotVertex |
( |
const std::string & |
type, |
|
|
const std::string & |
name, |
|
|
const IInterface * |
parent |
|
) |
| |
◆ ~InDetBeamSpotVertex()
virtual InDet::InDetBeamSpotVertex::~InDetBeamSpotVertex |
( |
| ) |
|
|
inlinevirtual |
◆ InDetBeamSpotVertex() [2/2]
◆ applyOutlierRemoval()
bool InDetBeamSpotVertex::applyOutlierRemoval |
( |
| ) |
|
|
private |
Definition at line 511 of file InDetBeamSpotVertex.cxx.
521 double meanx(0.),meany(0.), meanz(0.);
522 double meanxSqr(0.),meanySqr(0.), meanzSqr(0.);
523 double rmsX(0.),rmsY(0.), rmsZ(0.);
526 std::vector<double> vx,vy,vz;
532 if (!
it->valid)
continue;
536 meanxSqr += (
it->x)*(
it->x);
538 meanySqr += (
it->y)*(
it->y);
540 meanzSqr += (
it->z)*(
it->z);
556 double medianx = (vx.size() > 1 ? vx.at(vx.size()/2) : 0.);
557 double mediany = (vy.size() > 1 ? vy.at(vy.size()/2) : 0.);
558 double medianz = (vz.size() > 1 ? vz.at(vz.size()/2) : 0.);
562 <<
" z: " << medianz );
580 for (
unsigned int ivtx(0); ivtx < vx.size(); ++ivtx) {
581 double x = vx.at(ivtx);
582 double y = vy.at(ivtx);
583 double z = vz.at(ivtx);
599 rmsX = std::sqrt( std::abs(meanxSqr - meanx*meanx));
602 rmsY = std::sqrt( std::abs(meanySqr - meany*meany));
605 rmsZ = std::sqrt( std::abs(meanzSqr - meanz*meanz));
619 <<
" " <<
", y: " << meany <<
" " << rmsY <<
", z: " << meanz <<
" " << rmsZ );
623 CLHEP::HepVector chi2Pos(4);
624 CLHEP::HepSymMatrix chi2Cov(4);
625 double zpos(0), zerr(0);
634 if (!
it->valid)
continue;
639 if ( std::abs( medianz -
it->z ) > 10*rmsZ)
fail += 16;
642 if ( (medianx -
it->x)*(medianx-
it->x)/rmsX/rmsX + (mediany-
it->y)*(mediany-
it->y)/rmsY/rmsY >
m_sigTr*
m_sigTr) {
643 ATH_MSG_DEBUG(
"Vertex info: extended past radial extent: sig."
644 << sqrt((medianx -
it->x)*(medianx-
it->x)/rmsX/rmsX + (mediany-
it->y)*(mediany-
it->y)/rmsY/rmsY) <<
" > "
652 ATH_MSG_DEBUG(
"Vertex reject from simple mean; reason: " <<
fail <<
" : x,y,z: "
653 <<
it->x <<
" " <<
it->y <<
" " <<
it->z
654 <<
" , sigma(x,y,z): " << sqrt(
it->vxx) <<
" " << sqrt(
it->vyy)
655 <<
" " << sqrt(
it->vzz)
663 chi2Pos(1) +=
it->x *
it->vxx +
it->y*
it->vxy;
664 chi2Pos(2) +=
it->x*
it->vxx*
it->z +
it->y*
it->vxy*
it->z;
665 chi2Pos(3) +=
it->y*
it->vyy +
it->x*
it->vxy;
666 chi2Pos(4) +=
it->y*
it->vyy*
it->z +
it->x*
it->vxy*
it->z;
669 chi2Cov.fast(1,1) +=
it->vxx;
670 chi2Cov.fast(2,1) +=
it->vxx*
it->z;
671 chi2Cov.fast(2,2) +=
it->vxx*
it->z*
it->z;
672 chi2Cov.fast(3,1) +=
it->vxy;
673 chi2Cov.fast(3,2) +=
it->vxy*
it->z;
674 chi2Cov.fast(3,3) +=
it->vyy;
675 chi2Cov.fast(4,1) +=
it->vxy*
it->z;
676 chi2Cov.fast(4,2) +=
it->vxy*
it->z*
it->z;
677 chi2Cov.fast(4,3) +=
it->vyy*
it->z;
678 chi2Cov.fast(4,4) +=
it->vyy*
it->z*
it->z;
680 zpos +=
it->z/
it->vzz;
685 ATH_MSG_DEBUG(
"Removed: " << failCount <<
" vertices from simple mean,RMS." );
695 chi2Cov.invert(invFail);
696 chi2Pos = chi2Cov*chi2Pos;
698 zerr = 1./std::sqrt(zerr);
705 ATH_MSG_DEBUG(
"Mean position: x,y,z " << meanx <<
" " << meany <<
" " << meanz );
706 ATH_MSG_DEBUG(
" RMS: x,y,z " << rmsX <<
" " << rmsY <<
" " << rmsZ );
710 ATH_MSG_DEBUG(
"New chi2:" << chi2Pos <<
"\n" << chi2Cov <<
"\n" << zpos <<
" " << zerr );
735 ATH_MSG_INFO(
"Log-Likelihood fit converged in outlier removal. Exiting outlier removal." );
739 CLHEP::HepSymMatrix bsCov(2);
751 ATH_MSG_INFO(
": removeOutliers: LL fit not use/converged/trusted - " <<
752 "using chi2 for mean and simple RMS for width values " );
759 bsCov(1,1) = rmsX*rmsX;
760 bsCov(2,2) = rmsY*rmsY;
777 std::multimap<double, BeamSpot::VrtHolder*> chi2map;
782 if ( !
it->valid)
continue;
794 double increaseChi2(0);
796 increaseChi2 =
fail * 1e5;
801 CLHEP::HepSymMatrix
b(2);
804 b(1,1) =
it->vxx + bsCov(1,1);
805 b(2,2) =
it->vyy + bsCov(2,2);
806 b(2,1) =
it->vxy + bsCov(2,1);
810 if (failInv)
continue;
811 double ch = (
it->x - (xbar +
it->z*
ax)) *
b(1,1) * (
it->x - (xbar +
it->z*
ax))
812 + (
it->y - (ybar +
it->z*
ay)) *
b(2,2) * (
it->y - (ybar +
it->z*
ay))
813 + 2*(
it->x - (xbar +
it->z*
ax)) *
b(2,1) * (
it->y - (ybar +
it->z*
ay));
820 chi2map.insert(std::make_pair(
ch, &(*
it)));
826 for (std::multimap<double, BeamSpot::VrtHolder*>::reverse_iterator vit = chi2map.rbegin(); vit != chi2map.rend(); ++vit) {
827 if ( !vit->second)
continue;
828 if ( !vit->second->valid)
continue;
830 ATH_MSG_DEBUG(
" removeOutlier: Reached max number of vertex rejections for this iteration.\n"
831 <<
"\tNeed to recalculate mean positions." );
841 ATH_MSG_DEBUG(
" No more 'bad' vertices found in this iteration." );
843 ATH_MSG_DEBUG(
" No futher vertices removed - moving to final iteration" );
845 ATH_MSG_DEBUG(
" Moving to next iteration of outlier removal." );
853 vit->second->valid =
false;
855 ATH_MSG_DEBUG(
"Vertex rejected; chi2: " << vit->first <<
". pos(x,y,z): "
856 << vit->second->x <<
" " << vit->second->y <<
" " << vit->second->z
857 <<
" , sigma(x,y,z): " << sqrt(vit->second->vxx) <<
" " << sqrt(vit->second->vyy)
858 <<
" " << sqrt(vit->second->vzz)
865 ATH_MSG_WARNING(
"No vertices removed and fit still fails - most likely final result will fail" );
873 std::vector< BeamSpot::VrtHolder > vertexTemp(
m_vertexData);
875 std::random_device
rng;
876 std::mt19937 urng(
rng());
879 std::vector< BeamSpot::VrtHolder > vertex1,vertex2;
883 bool goodFit1(
false), goodFit2(
false);
889 ATH_MSG_WARNING(
"Fit using \"vertex1\" " << ( llSolve ?
"Successful":
"Failed") );
913 ATH_MSG_WARNING(
"Fit using \"vertex2\" " << ( llSolve ?
"Successful":
"Failed") );
933 ATH_MSG_WARNING(
"Fit was " << ( goodFit2 || goodFit1 ?
"Successful ":
"Unsuccessful ")
934 <<
" using a subset of the available vertices" );
935 if (( goodFit2 || goodFit1) )
941 }
else if (goodFit2) {
952 ATH_MSG_DEBUG(
" Recursive debug: Loop: " <<
m_rCount <<
". Number of failed vertices: " << fCount );
955 if ( fCount > 0 || ( fCount == 0 &&
m_rCount == 1 && !llSolve)) {
958 <<
". No more iterations performed." );
◆ clear()
void InDetBeamSpotVertex::clear |
( |
| ) |
|
◆ Clone()
◆ declareGaudiProperty() [1/4]
specialization for handling Gaudi::Property<SG::VarHandleKeyArray>
Definition at line 170 of file AthCommonDataStore.h.
175 hndl.documentation());
◆ declareGaudiProperty() [2/4]
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition at line 156 of file AthCommonDataStore.h.
161 hndl.documentation());
◆ declareGaudiProperty() [3/4]
specialization for handling Gaudi::Property<SG::VarHandleBase>
Definition at line 184 of file AthCommonDataStore.h.
189 hndl.documentation());
◆ declareGaudiProperty() [4/4]
◆ declareProperty() [1/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
hndl | Object holding the property value. |
doc | Documentation string for the property. |
This is the version for types that derive from SG::VarHandleBase
. The property value object is put on the input and output lists as appropriate; then we forward to the base class.
Definition at line 245 of file AthCommonDataStore.h.
250 this->declare(hndl.
vhKey());
251 hndl.
vhKey().setOwner(
this);
253 return PBASE::declareProperty(
name,hndl,
doc);
◆ declareProperty() [2/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
hndl | Object holding the property value. |
doc | Documentation string for the property. |
This is the version for types that derive from SG::VarHandleKey
. The property value object is put on the input and output lists as appropriate; then we forward to the base class.
Definition at line 221 of file AthCommonDataStore.h.
229 return PBASE::declareProperty(
name,hndl,
doc);
◆ declareProperty() [3/6]
◆ declareProperty() [4/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
property | Object holding the property value. |
doc | Documentation string for the property. |
This is the generic version, for types that do not derive from SG::VarHandleKey
. It just forwards to the base class version of declareProperty
.
Definition at line 333 of file AthCommonDataStore.h.
338 return PBASE::declareProperty(
name, property,
doc);
◆ declareProperty() [5/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
property | Object holding the property value. |
doc | Documentation string for the property. |
This dispatches to either the generic declareProperty
or the one for VarHandle/Key/KeyArray.
Definition at line 352 of file AthCommonDataStore.h.
◆ declareProperty() [6/6]
◆ detStore()
◆ doFit2()
void InDetBeamSpotVertex::doFit2 |
( |
TMinuit * |
minuit, |
|
|
bool |
printOut = false |
|
) |
| |
|
private |
Definition at line 1100 of file InDetBeamSpotVertex.cxx.
1106 minuit->FixParameter(6);
1107 minuit->FixParameter(7);
1110 minuit->FixParameter(0);
1111 minuit->FixParameter(1);
1112 minuit->FixParameter(2);
1113 minuit->FixParameter(3);
1116 minuit->FixParameter(4);
1117 minuit->FixParameter(5);
1138 if(printOut) minuit->SetPrintLevel(0);
◆ evtStore() [1/2]
◆ evtStore() [2/2]
◆ extraDeps_update_handler()
Add StoreName to extra input/output deps as needed.
use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given
◆ finalize()
StatusCode InDetBeamSpotVertex::finalize |
( |
| ) |
|
|
virtual |
◆ fit()
◆ getCov()
CLHEP::HepSymMatrix InDetBeamSpotVertex::getCov |
( |
double |
z | ) |
const |
◆ getCovMap()
std::map< std::string, double > InDetBeamSpotVertex::getCovMap |
( |
| ) |
const |
|
virtual |
Implements InDet::IInDetBeamSpotTool.
Definition at line 1144 of file InDetBeamSpotVertex.cxx.
1150 std::map<std::string,double> covMap;
1151 std::vector<double> covVector;
1152 covVector.resize(55);
1157 int map[] = {1,2,9,3,4,5,6,10,7,8};
1159 int map2[] = {1,2,8,3,4,5,6,9,7,10};
1160 for(
int i=0;
i < 10; ++
i){
1164 int map2[] = {1,2,6,3,4,8,9,7,10,5};
1165 for(
int i=0;
i < 10; ++
i){
1171 for (
int i=0;
i<10;++
i) {
1172 for (
int j=
i;j<10;++j) {
1174 covVector[
temp++] = 0;
1175 }
else if (
m_fixWidth && (
i == 5 ||
i == 6 ||
i == 8 || j == 5 || j == 6 || j == 8 ) ){
1176 covVector[
temp++] = 0;
1185 const std::string keyArr[] = {
"posXErr",
"covXY",
"covXZ",
"covXTiltX",
"covXTiltY",
"covXSx",
"covXSy",
"covXSz",
"covXRhoXY",
"covXk",
1186 "posYErr",
"covYZ",
"covYTiltX",
"covYTiltY",
"covYSx",
"covYSy",
"covYSz",
"covYRhoXY",
"covYk",
1187 "posZErr",
"covZTiltX",
"covZTiltY",
"covZSx",
"covZSy",
"covZSz",
"covZRhoXY",
"covZk",
1188 "tiltXErr",
"covTiltXTiltY",
"covTiltXSx",
"covTiltXSy",
"covTiltXSz",
"covTiltXRhoXY",
"covTiltXk",
1189 "tiltYErr",
"covTiltYSx",
"covTiltYSy",
"covTiltYSz",
"covTiltYRhoXY",
"covTiltYk",
1190 "sigmaXErr",
"covSxSy",
"covSxSz",
"covSxRhoXY",
"covSxk",
1191 "sigmaYErr",
"covSySz",
"covSyRhoXY",
"covSyk",
1192 "sigmaZErr",
"covSzRhoXY",
"covSzk",
1193 "rhoXYErr",
"covRhoXYk",
1200 for(
int i = 0;
i < 55;
i++){
1201 covMap[keyArr[
i]] = covVector[
i];
1206 covMap[ keyArr[0] ] = sqrt(covVector[0]);
1207 covMap[ keyArr[10] ] = sqrt(covVector[10]);
1208 covMap[ keyArr[19] ] = sqrt(covVector[19]);
1209 covMap[ keyArr[27] ] = sqrt(covVector[27]);
1210 covMap[ keyArr[34] ] = sqrt(covVector[34]);
1211 covMap[ keyArr[40] ] = sqrt(covVector[40]);
1212 covMap[ keyArr[45] ] = sqrt(covVector[45]);
1213 covMap[ keyArr[49] ] = sqrt(covVector[49]);
1214 covMap[ keyArr[52] ] = sqrt(covVector[52]);
1215 covMap[ keyArr[54] ] = sqrt(covVector[54]);
1222 CLHEP::HepSymMatrix covc =
getCov(
z);
1224 covMap[
"posXErr"] = sqrt( covc(1,1) );
1225 covMap[
"posYErr"] = sqrt( covc(2,2) );
1226 covMap[
"tiltXErr"] = sqrt( covc(3,3) );
1227 covMap[
"tiltYErr"] = sqrt( covc(4,4) );
◆ getErrK()
double InDet::InDetBeamSpotVertex::getErrK |
( |
| ) |
const |
|
inline |
◆ getErrRhoXY()
double InDet::InDetBeamSpotVertex::getErrRhoXY |
( |
| ) |
const |
|
inline |
◆ getErrSigmaX()
double InDet::InDetBeamSpotVertex::getErrSigmaX |
( |
double |
| ) |
const |
|
inline |
◆ getErrSigmaXY()
double InDet::InDetBeamSpotVertex::getErrSigmaXY |
( |
double |
z | ) |
const |
|
inline |
◆ getErrSigmaY()
double InDet::InDetBeamSpotVertex::getErrSigmaY |
( |
double |
| ) |
const |
|
inline |
◆ getErrSigmaZ()
double InDet::InDetBeamSpotVertex::getErrSigmaZ |
( |
| ) |
const |
|
inline |
◆ getErrTiltX()
double InDet::InDetBeamSpotVertex::getErrTiltX |
( |
| ) |
const |
|
inline |
◆ getErrTiltY()
double InDet::InDetBeamSpotVertex::getErrTiltY |
( |
| ) |
const |
|
inline |
◆ getErrX()
double InDet::InDetBeamSpotVertex::getErrX |
( |
double |
z | ) |
const |
|
inline |
◆ getErrY()
double InDet::InDetBeamSpotVertex::getErrY |
( |
double |
z | ) |
const |
|
inline |
◆ getErrZ()
double InDet::InDetBeamSpotVertex::getErrZ |
( |
| ) |
const |
|
inline |
◆ getFitID()
virtual FitID InDet::InDetBeamSpotVertex::getFitID |
( |
| ) |
const |
|
inlinevirtual |
◆ getK()
double InDet::InDetBeamSpotVertex::getK |
( |
| ) |
const |
|
inline |
◆ getLLcov()
const CLHEP::HepSymMatrix& InDet::InDetBeamSpotVertex::getLLcov |
( |
| ) |
const |
|
inline |
◆ getLLpos()
const CLHEP::HepVector& InDet::InDetBeamSpotVertex::getLLpos |
( |
| ) |
const |
|
inline |
◆ getParamMap()
std::map< std::string, double > InDetBeamSpotVertex::getParamMap |
( |
| ) |
const |
|
virtual |
◆ getRhoXY()
double InDet::InDetBeamSpotVertex::getRhoXY |
( |
| ) |
const |
|
inline |
◆ getSigmaX()
double InDet::InDetBeamSpotVertex::getSigmaX |
( |
double |
| ) |
const |
|
inline |
◆ getSigmaXY()
double InDet::InDetBeamSpotVertex::getSigmaXY |
( |
double |
z | ) |
const |
|
inline |
◆ getSigmaY()
double InDet::InDetBeamSpotVertex::getSigmaY |
( |
double |
| ) |
const |
|
inline |
◆ getSigmaZ()
double InDet::InDetBeamSpotVertex::getSigmaZ |
( |
| ) |
const |
|
inline |
◆ getTiltX()
double InDet::InDetBeamSpotVertex::getTiltX |
( |
| ) |
const |
|
inline |
◆ getTiltY()
double InDet::InDetBeamSpotVertex::getTiltY |
( |
| ) |
const |
|
inline |
◆ getX()
double InDet::InDetBeamSpotVertex::getX |
( |
double |
z | ) |
const |
|
inline |
◆ getY()
double InDet::InDetBeamSpotVertex::getY |
( |
double |
z | ) |
const |
|
inline |
◆ getZ()
double InDet::InDetBeamSpotVertex::getZ |
( |
| ) |
const |
|
inline |
◆ initialize()
StatusCode InDetBeamSpotVertex::initialize |
( |
| ) |
|
|
virtual |
◆ inputHandles()
Return this algorithm's input handles.
We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.
◆ interfaceID()
static const InterfaceID& InDet::IInDetBeamSpotTool::interfaceID |
( |
| ) |
|
|
inlinestaticinherited |
Retrieve interface ID.
Definition at line 53 of file IInDetBeamSpotTool.h.
53 {
return IID_IInDetBeamSpotTool; }
◆ msg() [1/2]
◆ msg() [2/2]
◆ msgLvl()
◆ outputHandles()
Return this algorithm's output handles.
We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.
◆ renounce()
◆ renounceArray()
◆ setInitialPars()
int InDetBeamSpotVertex::setInitialPars |
( |
TMinuit * |
minuit | ) |
|
|
private |
◆ setOutput()
bool InDetBeamSpotVertex::setOutput |
( |
TMinuit * |
minuit | ) |
|
|
private |
◆ setParsFromChi2()
int InDetBeamSpotVertex::setParsFromChi2 |
( |
TMinuit * |
minuit | ) |
|
|
private |
◆ solveChi2()
bool InDetBeamSpotVertex::solveChi2 |
( |
| ) |
|
|
private |
◆ solveLL()
bool InDetBeamSpotVertex::solveLL |
( |
bool |
printOut = false | ) |
|
|
private |
Definition at line 349 of file InDetBeamSpotVertex.cxx.
352 TMinuit * minuit =
new TMinuit(
m_NPARS);
358 minuit->SetPrintLevel(1);
361 minuit->SetPrintLevel(0);
363 minuit->SetPrintLevel(-1);
368 minuit->SetErrorDef(0.5);
374 minuit->mnexcm(
"SET STR",arglist,1,errFlag);
386 std::pair<int, std::string>
status;
388 bool goodFit =
false;
394 if (
status.first == 3 && (
status.second ==
"SUCCESSFUL" ||
395 status.second ==
"CONVERGED " ||
396 status.second ==
"CONVERGED") ){
◆ successfulFit()
bool InDetBeamSpotVertex::successfulFit |
( |
TMinuit * |
minuit, |
|
|
std::pair< int, std::string > & |
status |
|
) |
| |
|
private |
Definition at line 969 of file InDetBeamSpotVertex.cxx.
971 if (!minuit)
return false;
973 std::string sRes = minuit->fCstatu.Data();
975 Double_t fmin, fedm, errdef;
976 Int_t npari,nparx,istat;
977 minuit->mnstat(fmin, fedm, errdef,npari,nparx,istat);
979 ATH_MSG_DEBUG(
"Fit reports status: " << istat <<
" and " << sRes );
984 bool sanityPassed(
true);
987 minuit->GetParameter(6,
x,ex);
989 sanityPassed =
false;
992 minuit->GetParameter(4,
x,ex);
994 sanityPassed =
false;
997 minuit->GetParameter(5,
x,ex);
999 sanityPassed =
false;
1003 minuit->GetParameter(7,
x,ex);
1005 sanityPassed =
false;
1013 if (!sanityPassed) {
1015 status.second =
"FAILED BEAMSPOT SANITY CHECK";
1017 ATH_MSG_DEBUG(
"Fit " << ( sanityPassed ?
"Passed":
"Failed") <<
" sanity check: " );
1019 if ( istat != 3)
return false;
◆ sysInitialize()
◆ sysStart()
Handle START transition.
We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.
◆ updateVHKA()
◆ m_cov
CLHEP::HepSymMatrix InDet::InDetBeamSpotVertex::m_cov |
|
private |
◆ m_def_ax
double InDet::InDetBeamSpotVertex::m_def_ax |
|
private |
◆ m_def_ay
double InDet::InDetBeamSpotVertex::m_def_ay |
|
private |
◆ m_def_sx
double InDet::InDetBeamSpotVertex::m_def_sx |
|
private |
◆ m_def_sy
double InDet::InDetBeamSpotVertex::m_def_sy |
|
private |
◆ m_def_sz
double InDet::InDetBeamSpotVertex::m_def_sz |
|
private |
◆ m_def_x0
double InDet::InDetBeamSpotVertex::m_def_x0 |
|
private |
◆ m_def_y0
double InDet::InDetBeamSpotVertex::m_def_y0 |
|
private |
◆ m_def_z
double InDet::InDetBeamSpotVertex::m_def_z |
|
private |
◆ m_detStore
◆ m_doChi2OutlierRemoval
bool InDet::InDetBeamSpotVertex::m_doChi2OutlierRemoval |
|
private |
◆ m_doFitSanityCheck
bool InDet::InDetBeamSpotVertex::m_doFitSanityCheck |
|
private |
◆ m_evtStore
◆ m_fitStatus
FitStatus InDet::InDetBeamSpotVertex::m_fitStatus |
|
private |
◆ m_fixInputK
bool InDet::InDetBeamSpotVertex::m_fixInputK |
|
private |
◆ m_fixWidth
bool InDet::InDetBeamSpotVertex::m_fixWidth |
|
private |
◆ m_fractionRMS
float InDet::InDetBeamSpotVertex::m_fractionRMS |
|
private |
◆ m_getLLres
bool InDet::InDetBeamSpotVertex::m_getLLres |
|
private |
◆ m_init_ax
double InDet::InDetBeamSpotVertex::m_init_ax |
|
private |
◆ m_init_ay
double InDet::InDetBeamSpotVertex::m_init_ay |
|
private |
◆ m_init_k
double InDet::InDetBeamSpotVertex::m_init_k |
|
private |
◆ m_init_max_ax
double InDet::InDetBeamSpotVertex::m_init_max_ax |
|
private |
◆ m_init_max_ay
double InDet::InDetBeamSpotVertex::m_init_max_ay |
|
private |
◆ m_init_max_k
double InDet::InDetBeamSpotVertex::m_init_max_k |
|
private |
◆ m_init_max_rhoxy
double InDet::InDetBeamSpotVertex::m_init_max_rhoxy |
|
private |
◆ m_init_max_sx
double InDet::InDetBeamSpotVertex::m_init_max_sx |
|
private |
◆ m_init_max_sy
double InDet::InDetBeamSpotVertex::m_init_max_sy |
|
private |
◆ m_init_max_sz
double InDet::InDetBeamSpotVertex::m_init_max_sz |
|
private |
◆ m_init_max_x
double InDet::InDetBeamSpotVertex::m_init_max_x |
|
private |
◆ m_init_max_y
double InDet::InDetBeamSpotVertex::m_init_max_y |
|
private |
◆ m_init_max_z
double InDet::InDetBeamSpotVertex::m_init_max_z |
|
private |
◆ m_init_min_ax
double InDet::InDetBeamSpotVertex::m_init_min_ax |
|
private |
◆ m_init_min_ay
double InDet::InDetBeamSpotVertex::m_init_min_ay |
|
private |
◆ m_init_min_k
double InDet::InDetBeamSpotVertex::m_init_min_k |
|
private |
◆ m_init_min_rhoxy
double InDet::InDetBeamSpotVertex::m_init_min_rhoxy |
|
private |
◆ m_init_min_sx
double InDet::InDetBeamSpotVertex::m_init_min_sx |
|
private |
◆ m_init_min_sy
double InDet::InDetBeamSpotVertex::m_init_min_sy |
|
private |
◆ m_init_min_sz
double InDet::InDetBeamSpotVertex::m_init_min_sz |
|
private |
◆ m_init_min_x
double InDet::InDetBeamSpotVertex::m_init_min_x |
|
private |
◆ m_init_min_y
double InDet::InDetBeamSpotVertex::m_init_min_y |
|
private |
◆ m_init_min_z
double InDet::InDetBeamSpotVertex::m_init_min_z |
|
private |
◆ m_init_rhoxy
double InDet::InDetBeamSpotVertex::m_init_rhoxy |
|
private |
◆ m_init_sx
double InDet::InDetBeamSpotVertex::m_init_sx |
|
private |
◆ m_init_sy
double InDet::InDetBeamSpotVertex::m_init_sy |
|
private |
◆ m_init_sz
double InDet::InDetBeamSpotVertex::m_init_sz |
|
private |
◆ m_init_x
double InDet::InDetBeamSpotVertex::m_init_x |
|
private |
◆ m_init_y
double InDet::InDetBeamSpotVertex::m_init_y |
|
private |
◆ m_init_z
double InDet::InDetBeamSpotVertex::m_init_z |
|
private |
◆ m_kMaxFail
double InDet::InDetBeamSpotVertex::m_kMaxFail |
|
private |
◆ m_kMinFail
double InDet::InDetBeamSpotVertex::m_kMinFail |
|
private |
◆ m_maxOutlierLoops
int InDet::InDetBeamSpotVertex::m_maxOutlierLoops |
|
private |
◆ m_maxVtxErTr
double InDet::InDetBeamSpotVertex::m_maxVtxErTr |
|
private |
◆ m_minuit_maxIter
int InDet::InDetBeamSpotVertex::m_minuit_maxIter |
|
private |
◆ m_minVtxProb
double InDet::InDetBeamSpotVertex::m_minVtxProb |
|
private |
◆ m_NPARS
const int InDet::InDetBeamSpotVertex::m_NPARS |
|
private |
◆ m_nUsed
int InDet::InDetBeamSpotVertex::m_nUsed |
|
private |
◆ m_outlierChi2Tr
double InDet::InDetBeamSpotVertex::m_outlierChi2Tr |
|
private |
◆ m_p
CLHEP::HepVector InDet::InDetBeamSpotVertex::m_p |
|
private |
◆ m_pLL
CLHEP::HepVector InDet::InDetBeamSpotVertex::m_pLL |
|
private |
◆ m_rCount
std::atomic<int> InDet::InDetBeamSpotVertex::m_rCount {0} |
|
mutableprivate |
◆ m_rhoFail
double InDet::InDetBeamSpotVertex::m_rhoFail |
|
private |
◆ m_setInitialRMS
bool InDet::InDetBeamSpotVertex::m_setInitialRMS |
|
private |
◆ m_sigTr
double InDet::InDetBeamSpotVertex::m_sigTr |
|
private |
◆ m_singleIterationMax
int InDet::InDetBeamSpotVertex::m_singleIterationMax |
|
private |
◆ m_truncatedRMS
bool InDet::InDetBeamSpotVertex::m_truncatedRMS |
|
private |
◆ m_useLL
bool InDet::InDetBeamSpotVertex::m_useLL |
|
private |
◆ m_useLLNorm
bool InDet::InDetBeamSpotVertex::m_useLLNorm |
|
private |
◆ m_V
CLHEP::HepSymMatrix InDet::InDetBeamSpotVertex::m_V |
|
private |
◆ m_varHandleArraysDeclared
◆ m_vertexCount
long InDet::InDetBeamSpotVertex::m_vertexCount |
|
private |
◆ m_vertexData
◆ m_vhka
◆ m_VLL
CLHEP::HepSymMatrix InDet::InDetBeamSpotVertex::m_VLL |
|
private |
◆ m_widthFail
double InDet::InDetBeamSpotVertex::m_widthFail |
|
private |
◆ m_x
CLHEP::HepVector InDet::InDetBeamSpotVertex::m_x |
|
private |
◆ m_z
double InDet::InDetBeamSpotVertex::m_z |
|
private |
◆ m_zErr
double InDet::InDetBeamSpotVertex::m_zErr |
|
private |
◆ m_zErrSolved
double InDet::InDetBeamSpotVertex::m_zErrSolved |
|
private |
◆ m_zSolved
double InDet::InDetBeamSpotVertex::m_zSolved |
|
private |
The documentation for this class was generated from the following files:
JetConstituentVector::iterator iterator
void shuffle(typename std::reverse_iterator< DataModel_detail::iterator< DVL > > beg, typename std::reverse_iterator< DataModel_detail::iterator< DVL > > end, UniformRandom &g)
Specialization of shuffle for DataVector/List.
double getSigmaXY(double z) const
bool setOutput(TMinuit *minuit)
CLHEP::HepSymMatrix m_cov
double getSigmaY(double) const
double getErrRhoXY() const
double getErrSigmaXY(double z) const
void doFit2(TMinuit *, bool printOut=false)
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
double getSigmaX(double) const
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
double getErrSigmaY(double) const
bool msgLvl(const MSG::Level lvl) const
double getErrY(double z) const
#define ATH_MSG_VERBOSE(x)
void myFCN_LLsolver(Int_t &, Double_t *, Double_t &, Double_t *, Int_t)
std::vector< BeamSpot::VrtHolder > m_vertexData
virtual void setOwner(IDataHandleHolder *o)=0
double getErrTiltY() const
CLHEP::HepSymMatrix getCov(double z) const
double getErrX(double z) const
double getErrSigmaX(double) const
std::atomic< int > m_rCount
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
InDetBeamSpotVertex(const std::string &type, const std::string &name, const IInterface *parent)
double getErrSigmaZ() const
virtual void renounce()=0
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
double getX(double z) const
bool successfulFit(TMinuit *, std::pair< int, std::string > &)
CLHEP::HepSymMatrix m_VLL
void sort(typename std::reverse_iterator< DataModel_detail::iterator< DVL > > beg, typename std::reverse_iterator< DataModel_detail::iterator< DVL > > end, const Compare &comp)
Specialization of sort for DataVector/List.
#define ATH_MSG_WARNING(x)
double getErrTiltX() const
void myFCN_LLsolverNorm(Int_t &, Double_t *, Double_t &, Double_t *, Int_t)
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
bool m_doChi2OutlierRemoval
bool solveLL(bool printOut=false)
int setParsFromChi2(TMinuit *minuit)
bool applyOutlierRemoval()
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
double getY(double z) const