#include "L1Algo.h" #include "L1Grid.h" void L1Algo::Init( const fscal geo[] ) { for(int iProc=0; iProc<4; iProc++) { for(int i=0; i<8; i++){ threadNumberToCpuMap[2*i+0 + iProc*20] = 4*i + iProc; threadNumberToCpuMap[2*i+1 + iProc*20] = 4*i + 32 + iProc; } for(int i=0; i<2; i++){ threadNumberToCpuMap[2*i+0 + 16 + iProc*20] = 4*i + iProc + 64; threadNumberToCpuMap[2*i+1 + 16 + iProc*20] = 4*i + 8 + iProc + 64; } } //lxir039 // for (int i=0; i<8; i++){ // threadNumberToCpuMap[2*i+0] = 15-i; // threadNumberToCpuMap[2*i+1] = 15-(i+8); // } int ind=0; { L1FieldValue B[3]; fvec z[3]; for( int i=0; i<3; i++){ z[i] = geo[ind++]; B[i].x = geo[ind++]; B[i].y = geo[ind++]; B[i].z = geo[ind++]; #ifndef TBB2 std::cout<<"L1Algo Input Magnetic field:"<(geo[ind++]); NMvdStations = static_cast(geo[ind++]); // cout << "N MVD & STS stations: " << NMvdStations << " " << NStations-NMvdStations << endl; #ifndef TBB2 std::cout<<"L1Algo Input "<( geo[ind++] ); for( int iC=0; iC( geo[ind++] ); fMomentumCutOff = geo[ind++]; fGhostSuppression = static_cast( geo[ind++] ); { fvec By0 = vStations[NStations-1].fieldSlice.cy[0]; fvec z0 = vStations[NStations-1].z; fvec sy = 0.f, Sy = 0.f; for( int i=NStations-1; i>=0; i-- ){ L1Station &st = vStations[i]; fvec dz = st.z-z0; fvec By = vStations[i].fieldSlice.cy[0]; Sy += dz*sy + dz*dz*By/2.f; sy += dz*By; st.Sy = Sy; z0 = st.z; } } // for( int iS = 0; iS < NStations; ++iS ) { /// Grid is created for each station with the same step: xStep,yStep // L1Grid &grid = vGrid[iS]; // // // grid.Create(-1,1,-0.6,0.6,xStep,yStep); // grid.Create(-1,1,-0.6,0.6,0.00317899,0.00105966); // } #ifndef TBB2 std::cout<<"L1Algo initialized"< & StsHits_, const vector< L1Strip > & StsStrips_, const vector< L1Strip > & StsStripsB_, const vector< fscal > & StsZPos_, const vector< unsigned char > & SFlag_, const vector< unsigned char > & SFlagB_, const THitI* StsHitsStartIndex_, const THitI* StsHitsStopIndex_ ) { vStsHits = & StsHits_; vStsStrips = & StsStrips_; vStsStripsB = & StsStripsB_; vStsZPos = & StsZPos_; vSFlag = & SFlag_; vSFlagB = & SFlagB_; StsHitsStartIndex = StsHitsStartIndex_; StsHitsStopIndex = StsHitsStopIndex_; /* vStsHits.resize(StsHits_.size()); vStsStrips.resize(StsStrips_.size()); vStsStripsB.resize(StsStripsB_.size()); vStsZPos.resize(StsZPos_.size()); vSFlag.resize(SFlag_.size()); vSFlagB.resize(SFlagB_.size()); for(Tindex i=0; i< static_cast(StsHits_.size()); ++i ) vStsHits[i] = StsHits_[i]; for(Tindex i=0; i< static_cast(StsStrips_.size()); ++i ) vStsStrips[i] = StsStrips_[i]; for(Tindex i=0; i< static_cast(StsStripsB_.size()); ++i ) vStsStripsB[i] = StsStripsB_[i]; for(Tindex i=0; i< static_cast(StsZPos_.size()); ++i ) vStsZPos[i] = StsZPos_[i]; for(Tindex i=0; i< static_cast(SFlag_.size()); ++i ) vSFlag[i] = SFlag_[i]; for(Tindex i=0; i< static_cast(SFlagB_.size()); ++i ) vSFlagB[i] = SFlagB_[i]; for(Tindex i=0; i(vStsHitsUnusedV.f[ih]); // const fvec &b = reinterpret_cast(vStsHitsUnusedV.b[ih]); const fvec &u = reinterpret_cast(vStsHitsUnusedV.u[ih]); const fvec &v = reinterpret_cast(vStsHitsUnusedV.v[ih]); const fvec &z = reinterpret_cast(vStsHitsUnusedV.z[ih]); int n = ih/fvecLen; L1Station &sta = vStations[ista]; const fvec x = sta.xInfo.sin_phi*u + sta.xInfo.cos_phi*v; const fvec y = sta.yInfo.cos_phi*u + sta.yInfo.sin_phi*v; Point->SetL1HitPointV(x,y,z,v,u, n); }