#include "L1AlgoInputMCData.h" #include "CbmL1StsHit.h" #include "CbmL1MCPoint.h" #include "CbmL1MCTrack.h" #include #include using namespace std; using std::ios; L1AlgoInputMCData::L1AlgoInputMCData( const L1AlgoInputMCData& a) { SetData( a.GetHitStore(), a.GetStsHits(), a.GetMCPoints(), a.GetMCTracks(), a.GetHitMCRef()); } const L1AlgoInputMCData& L1AlgoInputMCData::operator=( const L1AlgoInputMCData& a) { SetData( a.GetHitStore(), a.GetStsHits(), a.GetMCPoints(), a.GetMCTracks(), a.GetHitMCRef()); return a; } void L1AlgoInputMCData::SetData( const vector< CbmL1HitStore > & HitStore_, const vector< CbmL1StsHit > & StsHits_, const vector< CbmL1MCPoint > & MCPoints_, const vector< CbmL1MCTrack > & MCTracks_, const vector< int > & HitMCRef_ ) { vHitStore.resize(HitStore_.size()); vStsHits.resize(StsHits_.size()); vMCPoints.resize(MCPoints_.size()); vMCTracks.resize(MCTracks_.size()); vHitMCRef.resize(HitMCRef_.size()); for(unsigned int i=0; i> s; fpdata >> nEv; if (nEv != nEvent_) cout << "-E- CbmL1: Performance: can't read event number " << nEvent_ << " from file " << "data_perfo.txt" << endl; // vMCPoints int n; // number of elements fpdata >> n; // cout << n <<"vMCPoints: "<< endl; for (int i = 0; i < n; i++){ CbmL1MCPoint element; fpdata >> element.xIn; fpdata >> element.yIn; fpdata >> element.zIn; fpdata >> element.pxIn; fpdata >> element.pyIn; fpdata >> element.pzIn; fpdata >> element.xOut; fpdata >> element.yOut; fpdata >> element.zOut; fpdata >> element.pxOut; fpdata >> element.pyOut; fpdata >> element.pzOut; element.x = (element.xIn + element.xOut)/2; element.y = (element.yIn + element.yOut)/2; element.z = (element.zIn + element.zOut)/2; element.px = (element.pxIn + element.pxOut)/2; element.py = (element.pyIn + element.pyOut)/2; element.pz = (element.pzIn + element.pzOut)/2; fpdata >> element.p; fpdata >> element.q; fpdata >> element.mass; fpdata >> element.pdg; fpdata >> element.ID; fpdata >> element.mother_ID; fpdata >> element.iStation; int nhits; fpdata >> nhits; for (int k = 0; k < nhits; k++){ int helement; fpdata >> helement; element.hitIds.push_back(helement); }; vMCPoints.push_back(element); }; if (iVerbose >= 4) cout << "vMCPoints[" << n << "]" << " have been read." << endl; // vMCTracks . without Points fpdata >> n; // cout << n <<"vMCTracks: "<< endl; for (int i = 0; i < n; i++){ CbmL1MCTrack element; fpdata >> element.x; fpdata >> element.y; fpdata >> element.z; fpdata >> element.px; fpdata >> element.py; fpdata >> element.pz; fpdata >> element.p; fpdata >> element.q; fpdata >> element.mass; fpdata >> element.pdg; fpdata >> element.ID; fpdata >> element.mother_ID; int nhits; fpdata >> nhits; for (int k = 0; k < nhits; k++){ int helement; fpdata >> helement; element.StsHits.push_back(helement); }; fpdata >> nhits; for (int k = 0; k < nhits; k++){ int helement; fpdata >> helement; element.Points.push_back(helement); }; fpdata >> element.nMCContStations; fpdata >> element.nHitContStations; fpdata >> element.maxNStaMC; fpdata >> element.maxNSensorMC; fpdata >> element.maxNStaHits; fpdata >> element.nStations; element.CalculateIsReconstructable(); vMCTracks.push_back(element); }; if (iVerbose >= 4) cout << "vMCTracks[" << n << "]" << " have been read." << endl; // vHitMCRef fpdata >> n; // cout << n <<"vHitMCRef: "<< endl; for (int i = 0; i < n; i++){ int element; fpdata >> element; vHitMCRef.push_back(element); }; if (iVerbose >= 4) cout << "vHitMCRef[" << n << "]" << " have been read." << endl; // vHitStore fpdata >> n; // cout << n <<" vHitStore "<< endl; for (int i = 0; i < n; i++){ CbmL1HitStore element; fpdata >> element.ExtIndex; fpdata >> element.iStation; fpdata >> element.x; fpdata >> element.y; vHitStore.push_back(element); // cout << element.ExtIndex << " "<< element.iStation << " "<< element.x << " "<< element.y << " " << endl; }; if (iVerbose >= 4) cout << "vHitStore[" << n << "]" << " have been read." << endl; // vStsHits fpdata >> n; // cout << n <<" vStsHits"<< endl; for (int i = 0; i < n; i++){ CbmL1StsHit element; fpdata >> element.hitId; fpdata >> element.extIndex; int nPoints; fpdata >> nPoints; element.mcPointIds.clear(); for (int k = 0; k < nPoints; k++){ int id; fpdata >> id; element.mcPointIds.push_back(id); }; vStsHits.push_back(element); }; if (iVerbose >= 4) cout << "vStsHits[" << n << "]" << " have been read." << endl; // if (nEvent == maxNEvent) { // file open on begin of all work class and close at end // fpdata.close(); // cout << " -I- Performance: data read from file " << "data_perfo.txt" << " successfully"<< endl; // } if (iVerbose >= 2) cout << "-I- CbmL1: L1Performance data for event " << nEvent_ << " has been read from file " << fname << " successfully." << endl; } // if (nEvent <= maxNEvent) nEvent_++; return 1; } // void Performance::ReadStAPPerfoData()