void CCProtonPi0_QSqFitter::FillChiSqVector_W_Shift(bool isSignal) { // Read Files std::string data_dir = Folder_List::rootDir_Interaction_data; std::string mc_dir = Folder_List::rootDir_Interaction_mc; TFile* f_data = new TFile(data_dir.c_str()); TFile* f_mc = new TFile(mc_dir.c_str()); for (int i = 0; i < 151; ++i){ // Get Histograms MnvH1D* h_data = GetMnvH1D(f_data, Form("%s_%d","W_Shift",i)); // Background Subtract if Signal if (isSignal){ MnvH1D* h_mc_bckg = GetMnvH1D(f_mc, Form("%s_%d","W_Shift_Bckg",i)); NormalizeHistogram(h_mc_bckg); h_mc_bckg->Scale(2997.1); h_data->Add(h_mc_bckg, -1); delete h_mc_bckg; } MnvH1D* h_mc; if (isSignal){ h_mc = GetMnvH1D(f_mc, Form("%s_%d","W_Shift_Signal",i)); }else{ h_mc = GetMnvH1D(f_mc, Form("%s_%d","W_Shift",i)); } double ChiSq = Calc_ChiSq_W_Shift(h_data, h_mc); ChiSqVector_W_Shift.push_back(ChiSq); // Clean Memory delete h_data; delete h_mc; } if (isDebug){ if (isSignal){ std::cout<<"ChiSq Vector for W Shift -- Signal Events"<<std::endl; }else{ std::cout<<"ChiSq Vector for W Shift"<<std::endl; } for (unsigned int i = 0; i < ChiSqVector_W_Shift.size(); ++i){ std::cout<<"\t"<<i<<" "<<ChiSqVector_W_Shift[i]<<std::endl; } } delete f_data; delete f_mc; }
void MotionCooccurrenceHistogram::Extract(const string& video_path, MotionCooccurrenceHistogram::eMotionCooccurrenceType cType, int nFrameSkip, int nFrameHistory) { vector<vector<double> > vHistNor; vector<vector<double> > vecMotionVel, vecMotionAngle; vector<vector<pair<int, int> > > vecMotionPosStart, vecMotionPosEnd; vector<int> vec_nFrameID; // Frame history value m_nFrameHistory = nFrameHistory; // Define the length of diagonal m_dDiagLength = 400; MotionVectorExtractor m; // Extract motion vector with respect to the given parameters m.Extract(video_path, MotionVectorExtractor::MOTION_OPTICAL_FLOW_BM, 0); // Get motion vectors to calculate histograms m.GetFeature(vecMotionVel, vecMotionAngle, vecMotionPosStart, vecMotionPosEnd, vec_nFrameID); /* // Write motion vectors to the file ofstream outMotionVel("outMotionVel.txt", iostream::app); ofstream outMotionAngle("outMotionAngle.txt", iostream::app); for (unsigned int i = 0; i < vecMotionVel.size(); i++) { for (unsigned int j = 0; j < vecMotionVel[i].size(); j++) { outMotionVel << vecMotionVel[i][j] << endl; outMotionAngle << vecMotionAngle[i][j] << endl; } } outMotionVel.close(); outMotionAngle.close(); */ StartCounter(); if (cType == MotionCooccurrenceHistogram::MOTION_COOCCURRENCE_ANGLE) { vector<map<pair<int, int>, int> > vPositionAngle; // Holds position and quantized angle bin for each frame vector<vector<double> > vHistTemp; int nAngleBin; for (unsigned int f = 0; f<vecMotionAngle.size(); f++) { map<pair<int, int>, int> mPositionAngleTemp; for (unsigned int m = 0; m<vecMotionAngle[f].size(); m++) { nAngleBin = QuantizeMotionAngle(vecMotionAngle[f][m]); mPositionAngleTemp.insert(pair<pair<int, int>, int>(vecMotionPosStart[f][m], nAngleBin)); } vPositionAngle.push_back(mPositionAngleTemp); } MotionAngleCooccurrence(vPositionAngle, nFrameSkip, vHistTemp); NormalizeHistogram(vHistTemp, vHistNor); } else if (cType == MotionCooccurrenceHistogram::MOTION_COOCCURRENCE_VELOCITY) { vector<map<pair<int, int>, int> > vPositionVelocity; // Holds position and quantized angle bin for each frame vector<vector<double> > vHistTemp; int nVelocityBin; double unitTime; unitTime = 0.04; for (unsigned int f = 0; f<vecMotionVel.size(); f++) { map<pair<int, int>, int> mPositionVelocityTemp; for (unsigned int m = 0; m<vecMotionVel[f].size(); m++) { nVelocityBin = QuantizeMotionVelocity(vecMotionVel[f][m], unitTime); mPositionVelocityTemp.insert(pair<pair<int, int>, int>(vecMotionPosStart[f][m], nVelocityBin)); } vPositionVelocity.push_back(mPositionVelocityTemp); } MotionVelocityCooccurrence(vPositionVelocity, nFrameSkip, vHistTemp); //vHistNor = vHistTemp; NormalizeHistogram(vHistTemp, vHistNor); } else if (cType == MotionCooccurrenceHistogram::MOTION_COOCCURRENCE_ANGLE_VELOCITY) { vector<vector<double> > vAngleHistTemp, vVelocityHistTemp; vector<vector<double> > vAngleHistNor, vVelocityHistNor; vector<map<pair<int, int>, int> > vPositionAngle, vPositionVelocity; int nAngleBin, nVelocityBin; double unitTime; unitTime = 0.04; // Quantize angle and velocity for (unsigned int f = 0; f<vecMotionAngle.size(); f++) { map<pair<int, int>, int> mPositionAngleTemp, mPositionVelocityTemp; for (unsigned int m = 0; m<vecMotionAngle[f].size(); m++) { nAngleBin = QuantizeMotionAngle(vecMotionAngle[f][m]); mPositionAngleTemp.insert(pair<pair<int, int>, int>(vecMotionPosStart[f][m], nAngleBin)); nVelocityBin = QuantizeMotionVelocity(vecMotionVel[f][m], unitTime); mPositionVelocityTemp.insert(pair<pair<int, int>, int>(vecMotionPosStart[f][m], nVelocityBin)); } vPositionAngle.push_back(mPositionAngleTemp); vPositionVelocity.push_back(mPositionVelocityTemp); } // Extract MCFs wrt position-angle and position-velocity MotionAngleCooccurrence(vPositionAngle, nFrameSkip, vAngleHistTemp); //vAngleHistNor = vAngleHistTemp; NormalizeHistogram(vAngleHistTemp, vAngleHistNor); MotionVelocityCooccurrence(vPositionVelocity, nFrameSkip, vVelocityHistTemp); //vVelocityHistNor = vVelocityHistTemp; NormalizeHistogram(vVelocityHistTemp, vVelocityHistNor); for (unsigned int j = 0; j<vAngleHistNor.size(); j++) { vector<double> vFeature; vFeature = vAngleHistNor[j]; vFeature.insert(vFeature.end(), vVelocityHistNor[j].begin(), vVelocityHistNor[j].end()); vHistNor.push_back(vFeature); } } m_vMCH_Video = vHistNor; m_vFrameID = vec_nFrameID; dElapsedTime = GetCounter(); }