//-*- Mode: C++ -*- // ***************************************************************************** // * // @Autors: I.Kulakov; M.Pugach; M.Zyzak; I.Kisel * // @e-mail: I.Kulakov@gsi.de; M.Pugach@gsi.de; M.Zyzak@gsi.de; I.Kisel@compeng.uni-frankfurt.de * // * // ***************************************************************************** #include "CAFunctionality.h" #include "FTSCAHitsV.h" #include "FTSCATarget.h" #include "iostream" float_m CAFunctionality::FitIteration(const PndFTSCAParam& caParam, const FTSCAHits& hits, PndFTSCATrackParamVector& param, const vector& iHits, const FTSCATarget& target, bool dir, bool useParam, const float_m& mask) { const int NTHits = iHits.size(); float_m active = mask; //get hits vector thits( NTHits ); for ( unsigned short ihit = 0; ihit < NTHits; ihit++ ) { TESV index = iHits[ihit]; if (!dir) index = iHits[NTHits-1-ihit]; FTSCAHit hs[float_v::Size]; foreach_bit(unsigned short iV, active) { hs[iV] = hits[index.s[iV]][index.e[iV]]; } thits[ihit] = FTSCAHitV( hs, active ); } const FTSCAHitV& hit0 = thits[NTHits-1]; /* cout<<"active "<= 0; ihit-- ) { const FTSCAHitV& hit = thits[ihit]; active &= param.Transport( hit, caParam, active ); active &= param.Filter( hit, caParam, active ); /*if (useParam) {cout<<"1.after filter Z "<(active)) = -4; param.SetNDF(ndf); param.SetChi2(0.f); //cout<<"2. fit bckwrd NDF "<= 0; ihit-- ) { const FTSCAHitV& hit = thits[ihit]; active &= param.Transport( hit, caParam, active ); active &= param.Filter( hit, caParam, active ); cout<<"3.after filter Z "<& iHits, const FTSCATarget& target, bool dir, const float_m& mask) { float_m active1 = mask; int_v maskvar(1); foreach_bit(unsigned short iV, active1) { if (iV!=0) { maskvar[iV] = 0; } } float_m active = static_cast (maskvar!=0); int i = 0; float_v qMom = float_v(10e10f); #if 1 qMom = param.QMomentum(); //cout<<"FitIteration "< 0.005f ) ) { qMom = param.QMomentum(); cout<<"FitIteration "< 0.005f ) ) { qMom = param.QMomentum(); active &= FitIteration( caParam, hits, param, iHits, target, !dir, true, active ); active &= FitIteration( caParam, hits, param, iHits, target, dir, true, active ); } #endif return active; } float_m CAFunctionality::FitUseParam(const PndFTSCAParam& caParam, const FTSCAHits& hits, PndFTSCATrackParamVector& param, const vector& iHits, const FTSCATarget& target, bool dir, bool usePar, const float_m& mask) { float_m active1 = mask; int_v maskvar(1); foreach_bit(unsigned short iV, active1) { if (iV!=0) { maskvar[iV] = 0; } } float_m active = static_cast (maskvar!=0); active &= FitIteration( caParam, hits, param, iHits, target, dir, usePar, active ); return active; }