#include "TROOT.h" #include "TSystem.h" #include "TChain.h" #include "TFile.h" #include "TString.h" #include const Char_t* defaultInFile = "test.list"; const Char_t *defaultOutFile = "oFemtoDst_pp200_2015.root"; using namespace std; class StFemtoDstMaker_HFT; StFemtoDstMaker_HFT *femtoMaker = NULL; //_________________ void FemtoDstMaker_pAu200_y2015(const Char_t* inFileList = defaultInFile, const Char_t* outFileName = defaultOutFile) { cout << "****************************************************" << endl << "* FemtoDstMaker for p+Au 200 GeV year 2015 (HFT) *" << endl << "* Start *" << endl << "****************************************************" << endl << endl; //Constants, cut and initial parameters Float_t cVtxZ[2] = {-30., 30.}; Float_t cVtxR[2] = {0., 3.}; Float_t cVtxXShift = 0.; Float_t cVtxYShift = 0.; Float_t cVtxVpdVzDiff[2] = {-30., 30.}; Float_t cParticleMom[2] = {0.15, 5.0}; Float_t cTrackDca[2] = {0., 3.}; Int_t cTrackNHits[2] = {10, 50}; Float_t cTrackEta[2] = {-1., 1.}; Int_t cTrackFlag[2] = {1, 999}; //Load libraries cout << "Loading libraries..." << endl; gROOT->LoadMacro("$STAR/StRoot/StMuDSTMaker/COMMON/macros/loadSharedLibraries.C"); loadSharedLibraries(); gSystem->Load("libMinuit"); gSystem->Load("StChain"); gSystem->Load("StRefMultCorr"); gSystem->Load("StFlowMaker"); gSystem->Load("StHbtMaker"); gSystem->Load("StPicoDstMakerRun11"); gSystem->Load("StFemtoDstMaker"); cout << "Libraries have been successfully loaded" << endl; //Create chain StChain *mChain = new StChain("StChain"); mChain->SetDebug(0); StMuDebug::setLevel(0); //Create MuDst reader int nMaxFileToRead = 1e9; cout << Form("Try to read file: %s", inFileList) << endl; StMuDstMaker *muDstMaker = new StMuDstMaker(0, 0, "", inFileList, "MuDst", nMaxFileToRead); muDstMaker->SetStatus("*",0); muDstMaker->SetStatus("Event*",1); muDstMaker->SetStatus("MuEvent*",1); muDstMaker->SetStatus("PrimaryVertices*",1); muDstMaker->SetStatus("PrimaryTracks*",1); muDstMaker->SetStatus("GlobalTracks*",1); muDstMaker->SetStatus("BTofHeader*",1); muDstMaker->SetStatus("BTofHit*",1); TChain *mCurrentTree = muDstMaker->chain(); Long64_t mNEvents = mCurrentTree->GetEntries(); cout << Form("Number of events in TTree: %d", mNEvents) << endl; //StFemtoDstMaker initialization femtoMaker = new StFemtoDstMaker_HFT(muDstMaker, outFileName); femtoMaker->SetTriggerId(500003); // VPDMB-5-trgonly (~24 M) femtoMaker->SetTriggerId(500004); // VPDMB-novtx (~23 M) femtoMaker->SetTriggerId(500904); // VPDMB-30 (~58 M) femtoMaker->SetVtxZCut(cVtxZ[0], cVtxZ[1]); femtoMaker->SetVtxRCut(cVtxR[0], cVtxR[1]); femtoMaker->SetVtxShift(cVtxXShift, cVtxYShift); femtoMaker->SetVtxVpdVzDiffCut(cVtxVpdVzDiff[0], cVtxVpdVzDiff[1]); femtoMaker->SetParticleMomentum(cParticleMom[0], cParticleMom[1]); femtoMaker->SetVtxZCut(cVtxZ[0], cVtxZ[1]); femtoMaker->SetVtxRCut(cVtxR[0], cVtxR[1]); femtoMaker->SetVtxShift(cVtxXShift, cVtxYShift); femtoMaker->SetVtxVpdVzDiffCut(cVtxVpdVzDiff[0], cVtxVpdVzDiff[1]); femtoMaker->SetParticleMomentum(cParticleMom[0], cParticleMom[1]); femtoMaker->SetTrackDca(cTrackDca[0], cTrackDca[1]); femtoMaker->SetTrackNHits(cTrackNHits[0], cTrackNHits[1]); femtoMaker->SetTrackEta(cTrackEta[0], cTrackEta[1]); femtoMaker->SetTrackFlag(cTrackFlag[0], cTrackFlag[1]); femtoMaker->SetCollisionType(false); femtoMaker->SetAuAuZdcCoincidenceEnergy(false); femtoMaker->SetMuDstMaker(muDstMaker); //Chain initialization and loop over events mChain->Init(); Int_t iReturn = 0; Int_t mNEventsProcessed = 0; Float_t mPerConst = 0.05; Float_t mPercentCounter = 0.0; Float_t mProgress = 0.; unsigned int mSubCounter = 1; // time time_t mStartTime, mStopTime, mDiffTime; // time float mFrac; // time mStartTime = time(0); // time for(Int_t iEvent=0; iEvent= mPercentCounter) { mPercentCounter += mPerConst; mStopTime = time(0); mDiffTime = difftime(mStopTime, mStartTime); mFrac = (float)mDiffTime*(float)(mNEvents - iEvent)/(float)iEvent; mSubCounter++; cout << Form("Processing progress: %4.2f%%. Time left: %.1f sec", mProgress*100., mFrac) << endl; } mChain->Clear(); iReturn = mChain->Make(iEvent); if(iReturn != 0) { cout << "Error has been occured. Event processing has been stopped" << endl; break; } } //for(Int_t iEvent=0; iEventFinish(); delete femtoMaker; delete mChain; cout << "****************************************************" << endl << "* FemtoDstMaker for p+Au 200 GeV year 2015 (HFT) *" << endl << "* End *" << endl << "****************************************************" << endl << endl; }