9 : combinationDone(
false), thePzError(
false), theValidWeightSum(0.), theInvalidWeightSum(0.) {
23 throw cms::Exception(
"LogicError") <<
"MultiTrajectoryStateAssembler: trying to add states after combination";
28 throw cms::Exception(
"LogicError") <<
"MultiTrajectoryStateAssembler: trying to add invalid state";
42 throw cms::Exception(
"LogicError") <<
"MultiTrajectoryStateAssembler: trying to add states after combination";
48 double pzFirst =
theStates.empty() ? 0. :
theStates.front().localParameters().pzSign();
49 for (MultiTSOS::const_iterator
i = states.begin();
i != states.end();
i++) {
51 throw cms::Exception(
"LogicError") <<
"MultiTrajectoryStateAssembler: trying to add invalid state";
55 if (!
theStates.empty() && pzFirst *
i->localParameters().pzSign() < 0.)
153 reweightedStates.reserve(
theStates.size());
155 auto oldWeight = is.weight();
156 reweightedStates.emplace_back(
factor * oldWeight,
157 is.localParameters(),
160 &(is.globalParameters().magneticField()),
183 LogDebug(
"GsfTrackFitters") <<
"MultiTrajectoryStateAssembler: found at least one state with inconsistent pz\n" 184 <<
" #state / weights before cleaning = " <<
theStates.size() <<
" / " 191 meanPz += is.weight() * is.localParameters().pzSign();
197 <<
" input multistate has average pZ sign == 0. Rejecting!" << std::endl;
208 for (
auto const &is : oldStates) {
209 if (meanPz * is.localParameters().pzSign() > 0.) {
214 LogDebug(
"GsfTrackFitters") <<
"removing weight / pz / global position = " << is.weight() <<
" " 215 << is.localParameters().pzSign() <<
" " << is.globalPosition();
218 LogDebug(
"GsfTrackFitters") <<
" #state / weights after cleaning = " <<
theStates.size() <<
" / "
TrajectoryStateOnSurface reweightedCombinedState(const double) const
void addState(const TrajectoryStateOnSurface)
double theInvalidWeightSum
Log< level::Error, false > LogError
void addStateVector(const MultiTSOS &)
void removeSmallWeights()
Container::value_type value_type
bool invalidCombinedState() const
Checks status of combined state.
void removeWrongPz()
Removes states with local p_z != average p_z.
float minFractionalWeight
void addInvalidState(const double)
Adds (the weight of an) invalid state to the list.
TrajectoryStateOnSurface TSOS
MultiTrajectoryStateAssembler()
std::vector< TrajectoryStateOnSurface > MultiTSOS
bool prepareCombinedState()
Preparation of combined state (cleaning & sorting)
TrajectoryStateOnSurface combinedState()