/// merge N events into 1. /// to compile: g++ convert.cpp -O3 -Icode/Common -o convert /// to run: convert NMergeEvents NGeneratedEvents OutputDir InputDir. If you want merge 20 events into 10, then print: convert 2 10 #define DEBUG #define MUTE1 #define MUTE2 #include #include #include #include #include #include // for atoi #include using namespace std; typedef float fscal; #include "AliHLTTPCCAMCPoint.h" #include "AliHLTTPCCAMCTrack.h" #include "AliHLTTPCCAGBHit.h" #include "AliHLTTPCPerformanceBase.h" char work_dir[100] = "/u/akishina/STT/Data_Panda/1GeV_10tr/"; char out_dir[100] = "/u/akishina/STT/Data_Panda/Valia/"; struct TData{ TData(){}; vector vHits; vector vMCPoints; vector vMCTracks; vector vHitLabel; bool ReadDataFromFiles(string prefix); bool ReadHitsFromFile(string prefix); bool WriteDataToFiles(string prefix); bool WriteHitsToFile(string prefix); void Add(TData& data_new, int iEv); void Reserve(TData& data_new); void SetNHits( int nHits ) { //* set the number of hits vHits.resize( nHits ); // fNHits = nHits; } }; void TData::Reserve(TData& data_new) { // vHits.size() = vHits.size() + data_new.vHits.size(); // vMCPoints.size() =+ data_new.vMCPoints.size(); // vMCTracks.size() =+ data_new.vMCTracks.size(); // vHitLabel.size() =+ data_new.vHitLabel.size(); // const int k = 1.2*nEv; // // #define res(AAAA) AAAA.reserve(AAAA.size()*k) // // res(vStsStrips); // res(vStsStripsB); // res(vStsHits); // res(vSFlag); // res(vSFlagB); // res(vMCPoints); // res(vMCTracks); // res(vHitMCRef); // res(vHitStore); // res(vStsHitsPerfo); // #undef res } void TData::Add(TData& data_new, int iEv) { int Tracks = vMCTracks.size(); int Hits = vHits.size(); int Points = vMCPoints.size(); for (unsigned int i = 0; i < data_new.vHits.size(); i++) {AliHLTTPCCAGBHit &p = data_new.vHits[i]; p.SetID( p.ID()+Hits); // p.SetEvN(iEv); vHits.push_back(data_new.vHits[i]); } cout << " vHits.push_back"<= 2){ NMergeEvents = atoi(argv[1]); } if (argc >= 3){ NEvents = atoi(argv[2]); } if (argc >= 4){ strcpy(out_dir,argv[3]); } if (argc >= 5){ strcpy(work_dir,argv[4]); } std::cout << " Create " << NEvents << " groups of events. " << NMergeEvents << " events in group " << std::endl; std::cout << " Output Dir = " << out_dir << std::endl; std::cout << " Input Dir = " << work_dir << std::endl; for (int igEv = 0; igEv < NEvents; igEv++ ){ TData data; TData data_out; ReadStAPAlgoData(data); data_out = data; for (int iEv = 1; iEv < NMergeEvents; iEv++ ){ ReadStAPAlgoData(data); data_out.Reserve(data); data_out.Add(data,iEv); cout<<"ADD!!"< vHitLabelSorted(data_out.vHitLabel.size()); for(int iH=0; iH> Size; cout<> l; } ifile.close(); return 1; } bool TData::ReadDataFromFiles(string prefix) { { ifstream ifile((prefix+"hitLabels.data").data()); if ( !ifile.is_open() ) return 0; int Size; ifile >> Size; cout<> l; } ifile.close(); } { ifstream ifile((prefix+"MCTracks.data").data()); if ( !ifile.is_open() ) return 0; int Size; ifile >> Size; cout<> l; } ifile.close(); } { ifstream ifile((prefix+"MCPoints.data").data()); if ( !ifile.is_open() ) return 0; int Size; ifile >> Size; cout<> l; } ifile.close(); } } bool TData::WriteHitsToFile(string prefix) { std::cout << "!!!!!!!!!!!! " << std::endl; fstream ifile; ifile.open((prefix+"hits.data").data(),fstream::out | fstream::app); if ( !ifile.is_open() ) return 0; int Size = vHits.size(); ifile << Size<