#include #include #include #include #include "TArtStoreManager.hh" #include "TArtEventStore.hh" #include "TArtBigRIPSParameters.hh" #include "TArtDALIParameters.hh" #include "TArtCalibPID.hh" #include "TArtCalibDALI.hh" #include "TArtCalibPPAC.hh" #include "TArtCalibPlastic.hh" #include "TArtEventInfo.hh" #include "TArtPlastic.hh" #include "TArtPPAC.hh" #include "TArtRecoPID.hh" #include "TArtRecoRIPS.hh" #include "TArtRecoTOF.hh" #include "TArtRecoBeam.hh" #include "TSystem.h" #include "TTree.h" #include "TFile.h" #include "TClonesArray.h" #include "TVector3.h" #include "signal.h" using namespace std; // function to exit loop at keyboard interrupt. bool stoploop = false; void stop_interrupt(){ printf("keyboard interrupt\n"); stoploop = true; } void MakeBigRIPSTree(char *infile, char *outfile="bigrips.root"){ // signal(SIGINT,stop_interrupt); // CTRL + C , interrupt // Create StoreManager both for calibration "TArtCalib..." and treatment "TArtReco..." //------------------------------------------------------------------------------------ TArtStoreManager * sman = TArtStoreManager::Instance(); // Create EventStore to control the loop and get the EventInfo //------------------------------------------------------------ TArtEventStore *estore = new TArtEventStore(); estore->SetInterrupt(&stoploop); estore->Open(infile); std::cout<<"estore ->"<< infile <LoadParameter("db/BigRIPSPPAC.xml"); para->LoadParameter("db/BigRIPSPlastic.xml"); para->LoadParameter("db/BigRIPSIC.xml"); para->LoadParameter("db/FocalPlane.xml"); para->SetFocusPosOffset(8,138.5); // Create CalibPID to get and calibrate raw data ( CalibPID -> //[CalibPPAC , CalibIC, CalibPlastic , CalibFocalPlane] TArtCalibPID *brcalib = new TArtCalibPID(); TArtCalibPPAC *ppaccalib = brcalib->GetCalibPPAC(); TArtCalibPlastic *plasticcalib = brcalib->GetCalibPlastic(); TArtCalibFocalPlane *cfpl= cpid->GetCalibFocalPlane(); // Create RecoPID to get calibrated data and to reconstruct TOF, AoQ, Z, ... (RecoPID -> //[ RecoTOF , RecoRIPS , RecoBeam] ) TArtRecoPID *recopid = new TArtRecoPID(); para->PrintListOfPPACPara(); //return; // Definition of observables we want to reconstruct std::cout << "Defining bigrips parameters" << std::endl; // TArtRIPS *rips3to5 = recopid->DefineNewRIPS(3,5,"matrix/mat1.mat",7.527); // F3 - F5 // TArtRIPS *rips5to7 = recopid->DefineNewRIPS(5,7,"matrix/mat2.mat",7.296); // F5 - F7 // TArtRIPS *rips8to9 = recopid->DefineNewRIPS(8,9,"matrix/F8F9_LargeAccAchr.mat",7.154); // F8 - F9 // TArtRIPS *rips9to11 = recopid->DefineNewRIPS(9,11,"matrix/F9F11_LargeAccAchr.mat",7.1529); // F9 - F11 // modified by Kasia, 2015-04-06 TArtRIPS *rips3to5 = recopid->DefineNewRIPS(3,5,"matrix/mat1.mat","D3"); // F3 - F5 TArtRIPS *rips5to7 = recopid->DefineNewRIPS(5,7,"matrix/mat2.mat","D5"); // F5 - F7 TArtRIPS *rips8to9 = recopid->DefineNewRIPS(8,9,"matrix/F8F9_LargeAccAchr.mat","D7"); // F8 - F9 TArtRIPS *rips9to11 = recopid->DefineNewRIPS(9,11,"matrix/F9F11_LargeAccAchr.mat","D8"); // F9 - F11 // Reconstruction of TOF DefineNewTOF(fisrt plane, second plane, time offset) TArtTOF *tof3to7 = recopid->DefineNewTOF("F3pl","F7pl",304.1,5); // F3 - F7 TArtTOF *tof8to11 = recopid->DefineNewTOF("F8pl","F11pl-1",-161.8,9); // F8 - F11 // Reconstruction of IC observables for ID //TArtBeam *beam_br_37 = recopid->DefineNewBeam(rips3to5,rips5to7,tof3to7,"F7IC"); // Reconstruction of IC observables for ID TArtBeam *beam_br_35 = recopid->DefineNewBeam(rips3to5,tof3to7,"F7IC"); TArtBeam *beam_br_57 = recopid->DefineNewBeam(rips5to7,tof3to7,"F7IC"); TArtBeam *beam_br_37 = recopid->DefineNewBeam(rips3to5,rips5to7,tof3to7,"F7IC"); TArtBeam *beam_zd_89 = recopid->DefineNewBeam(rips8to9,tof8to11,"F11IC"); TArtBeam *beam_zd_911 = recopid->DefineNewBeam(rips9to11,tof8to11,"F11IC"); TArtBeam *beam_br_811 = recopid->DefineNewBeam(rips8to9,rips9to11,tof8to11,"F11IC"); //to get trigger pattern TArtEventInfo *evtinfo=new TArtEventInfo(); int trg=-777; cout<<"trigger "<FindDataContainer("EventInfo"); std::cout<GetName()<Branch(info_array->GetName(),&info_array); TClonesArray * ppac_array = (TClonesArray *)sman->FindDataContainer("BigRIPSPPAC"); std::cout<GetName()<Branch(ppac_array->GetName(),&ppac_array); TClonesArray * pla_array = (TClonesArray *)sman->FindDataContainer("BigRIPSPlastic"); tree->Branch(pla_array->GetName(),&pla_array); TClonesArray * ic_array = (TClonesArray *)sman->FindDataContainer("BigRIPSIC"); tree->Branch(ic_array->GetName(),&ic_array); TClonesArray * fpl_array = (TClonesArray *)sman->FindDataContainer("BigRIPSFocalPlane"); tree->Branch(fpl_array->GetName(),&fpl_array); //PID reconstructed data: TClonesArray *rips_array = (TClonesArray *)sman->FindDataContainer("BigRIPSRIPS"); std::cout<GetName()<Branch(rips_array->GetName(),&rips_array); TClonesArray *tof_array = (TClonesArray *)sman->FindDataContainer("BigRIPSTOF"); std::cout<GetName()<Branch(tof_array->GetName(),&tof_array); TClonesArray *beam_array = (TClonesArray *)sman->FindDataContainer("BigRIPSBeam"); std::cout<GetName()<Branch(beam_array->GetName(),&beam_array); //The Focalplane: Double_t F3X; Double_t F3A; Double_t F3Y; Double_t F3B; Double_t F5X; Double_t F5A; Double_t F5Y; Double_t F5B; Double_t F7X; Double_t F7A; Double_t F7Y; Double_t F7B; Double_t F8X; Double_t F8A; Double_t F8Y; Double_t F8B; Double_t F9X; Double_t F9A; Double_t F9Y; Double_t F9B; Double_t F11X; Double_t F11A; Double_t F11Y; Double_t F11B; F3X=-9999; F3A=-9999; F3Y=-9999; F3B=-9999; F5X=-9999; F5A=-9999; F5Y=-9999; F5B=-9999; F7X=-9999; F7A=-9999; F7Y=-9999; F7B=-9999; F8X=-9999; F8A=-9999; F8Y=-9999; F8B=-9999; F9X=-9999; F9A=-9999; F9Y=-9999; F9B=-9999; F11X=-9999; F11A=-9999; F11Y=-9999; F11B=-9999; /* TArtFocalPlane *tfpl; TVectorD *vec; tfpl = cfpl->FindFocalPlane(3); if(tfpl){vec=tfpl->GetOptVector(); F3X=(*vec)(0); F3A=(*vec)(1); F3Y=(*vec)(2); F3B=(*vec)(3);} tfpl = cfpl->FindFocalPlane(5); if(tfpl){vec=tfpl->GetOptVector(); F5X=(*vec)(0); F5A=(*vec)(1); F5Y=(*vec)(2); F5B=(*vec)(3);} tfpl = cfpl->FindFocalPlane(7); if(tfpl){vec=tfpl->GetOptVector(); F7X=(*vec)(0); F7A=(*vec)(1); F7Y=(*vec)(2); F7B=(*vec)(3);} tfpl = cfpl->FindFocalPlane(8); if(tfpl){vec=tfpl->GetOptVector(); F8X=(*vec)(0); F8A=(*vec)(1); F8Y=(*vec)(2); F8B=(*vec)(3);} tfpl = cfpl->FindFocalPlane(9); if(tfpl){vec=tfpl->GetOptVector(); F9X=(*vec)(0); F9A=(*vec)(1); F9Y=(*vec)(2); F9B=(*vec)(3);} tfpl = cfpl->FindFocalPlane(11); if(tfpl){vec=tfpl->GetOptVector(); F11X=(*vec)(0); F11A=(*vec)(1); F11Y=(*vec)(2); F11B=(*vec)(3);} tree->Branch("F9X",&F9X,"F9X/D"); tree->Branch("F9A",&F9A,"F9A/D"); tree->Branch("F9Y",&F9Y,"F9Y/D"); tree->Branch("F9B",&F9B,"F9B/D"); */ int neve = 0; while(estore->GetNextEvent()&& neve<500000){ if(neve%1000==0) std::cout << "event: " << neve << std::endl; //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% //Making the BigRIPS tree calibration brcalib->ClearData(); brcalib->ReconstructData(); //Reconstructiong the PID recopid->ClearData(); recopid->ReconstructData(); tree->Fill(); neve++; } cout<<"Writing the tree."<Write(); fout->Close(); }