#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "UtilSQHit.h" #include "AnaRealDst.h" using namespace std; //class SRecEvent; const vector AnaRealDst::list_det_name = { "H1T", "H1B", "H2T", "H2B" }; int AnaRealDst::Init(PHCompositeNode* topNode) { return Fun4AllReturnCodes::EVENT_OK; } int AnaRealDst::InitRun(PHCompositeNode* topNode) { f_out = new TFile("output.root", "RECREATE"); tree = new TTree("tree", "Created by AnaRealDst"); tree->Branch("det_name", &b_det_name, "det_name/C"); tree->Branch("det" , &b_det , "det/I"); tree->Branch("ele" , &b_ele , "ele/I"); tree->Branch("time" , &b_time , "time/D"); tree->Branch("vartest" , &vartest , "vartest/I"); ostringstream oss; GeomSvc* geom = GeomSvc::instance(); for (unsigned int i_det = 0; i_det < list_det_name.size(); i_det++) { string name = list_det_name[i_det]; int id = geom->getDetectorID(name); if (id <= 0) { cerr << "!ERROR! AnaRealDst::InitRun(): Invalid ID (" << id << "). Probably the detector name that you specified in 'list_det_name' (" << name << ") is not valid. Abort." << endl; exit(1); } list_det_id.push_back(id); int n_ele = geom->getPlaneNElements(id); cout << " " << setw(6) << name << " = " << id << endl; oss.str(""); oss << "h1_ele_" << name; h1_ele[i_det] = new TH1I(oss.str().c_str(), "", n_ele, 0.5, n_ele+0.5); oss.str(""); oss << name << ";Element ID;Hit count"; h1_ele[i_det]->SetTitle(oss.str().c_str()); } test_hist = new TH1D("test_hist","test_hist",2,0,2);//additional return Fun4AllReturnCodes::EVENT_OK; } int AnaRealDst::process_event(PHCompositeNode* topNode) { SQEvent* event = findNode::getClass(topNode, "SQEvent"); SQHitVector* hit_vec = findNode::getClass(topNode, "SQHitVector"); SRecEvent* rec_vec = findNode::getClass(topNode, "SRecEvent"); if (!event || !hit_vec) return Fun4AllReturnCodes::ABORTEVENT; //int spill_id = event->get_spill_id(); //int event_id = event->get_event_id(); /// /// Event selection /// if (! event->get_trigger(SQEvent::NIM2)) { return Fun4AllReturnCodes::EVENT_OK; } /// /// Get & fill the hit info /// for (unsigned int i_det = 0; i_det < list_det_name.size(); i_det++) { strncpy(b_det_name, list_det_name[i_det].c_str(), sizeof(b_det_name)); b_det = list_det_id[i_det]; SQHitVector* hv = UtilSQHit::FindHits(hit_vec, b_det); for (SQHitVector::ConstIter it = hv->begin(); it != hv->end(); it++) { b_ele = (*it)->get_element_id(); b_time = (*it)->get_tdc_time (); tree->Fill(); h1_ele[i_det]->Fill(b_ele); //addition //for(int itrack=0; itrack<_recEvent->getNTracks(); ++itrack){ int itrack=0; SRecTrack recTrack = _recEvent->getTrack(itrack); charge[n_tracks] = recTrack.getCharge(); vartest = charge[n_tracks]; test_hist->Fill(vartest); cerr<<"VARTESTTTT "<getNTracks(); ++itrack){ int itrack=0; SRecTrack recTrack = _recEvent->getTrack(itrack); charge[n_tracks] = recTrack.getCharge(); vartest = charge[n_tracks]; test_hist->Fill(vartest); cerr<<"VARTESTTTT "<SetGrid(); for (unsigned int i_det = 0; i_det < list_det_id.size(); i_det++) { h1_ele[i_det]->Draw(); oss.str(""); oss << h1_ele[i_det]->GetName() << ".png"; c1->SaveAs(oss.str().c_str()); } delete c1; test_hist->Draw(); f_out->cd(); f_out->Write(); test_hist->Write(); f_out->Close(); return Fun4AllReturnCodes::EVENT_OK; }