#include "TROOT.h" #include "TSystem.h" #include "TChain.h" #include "TFile.h" #include "TString.h" #include const Char_t* defaultInFile = ""; const Char_t *defaultOutFile = "oFemtoDst_pp200_2012.root"; class StFemtoDstInclusiveSelector; StFemtoDstInclusiveSelector *mFemtoDstInclSelector = NULL; //_________________ void FemtoDstMaker_kaons_pp200_y2012(const Char_t* inFileList = defaultInFile, const Char_t* outFileName = defaultOutFile, const Bool_t isAuAu = false) { std::cout << "**************************" << std::endl << "* FemtoDstMaker *" << std::endl << "* Start *" << std::endl << "**************************" << std::endl << endl; //Constants, cut and initial parameters Float_t cVtxZ[2] = {-70., 70.}; Float_t cVtxR[2] = {0., 3.}; Float_t cVtxXShift = 0.; Float_t cVtxYShift = 0.; Float_t cVtxVpdVzDiff[2] = {-7., 7.}; Float_t cParticleMom[2] = {0.15, 1.65}; Float_t cTrackDcaGlobal[2] = {-0.01, 3.}; Int_t cTrackNHits[2] = {15, 50}; Int_t cTrackNHitsFit[2] = {5, 50}; Float_t cTrackEta[2] = {-1., 1.}; Int_t cTrackFlag[2] = {0, 1000}; Bool_t cZdcRefmultCorrection = true; //Should be false for low energies //Inclusive cuts //Kaons Bool_t cSelectKaons = true; Bool_t cSelectTpcKaons = true; Float_t cKaonTpcMom[2] = {0.15, 0.75}; Float_t cKaonTpcNSigmaElectron[2] = {-1., 1.}; Float_t cKaonTpcNSigmaPion[2] = {-1., 1.}; Float_t cKaonTpcNSigmaKaon[2] = {-3., 3.}; Float_t cKaonTpcNSigmaProton[2] = {-3., 3.}; Bool_t cSelectTofKaons = true; Float_t cKaonTofMom[2] = {0.5, 1.65}; Float_t cKaonMassSqr[2] = {0.16, 0.35}; //Load libraries std::cout << "Loading libraries..." << std::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("StFemtoDstMaker"); gSystem->Load("libStFemtoDstMaker.so"); std::cout << "Libraries have been successfully loaded" << std::endl; //Create chain StChain *mChain = new StChain("StChain"); mChain->SetDebug(0); StMuDebug::setLevel(0); //Create MuDst reader int nMaxFileToRead = 1e9; std::cout << Form("Try to read file: %s", inFileList) << std::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); TChain *mCurrentTree = muDstMaker->chain(); Long64_t mNEvents = mCurrentTree->GetEntries(); std::cout << Form("Number of events in TTree: %d", mNEvents) << std::endl; //Heavy ion related makers StRefMultCorr *mRefMult = new StRefMultCorr("refmult"); //StFemtoDstMaker initialization mFemtoDstInclSelector = new StFemtoDstInclusiveSelector(muDstMaker, outFileName); mFemtoDstInclSelector->AddTriggerId(17); //Trigger selection for pp200 y2012 P12id VPDMB mFemtoDstInclSelector->AddTriggerId(37); mFemtoDstInclSelector->AddTriggerId(370001); mFemtoDstInclSelector->AddTriggerId(370011); mFemtoDstInclSelector->SetVtxZCut(cVtxZ[0], cVtxZ[1]); mFemtoDstInclSelector->SetVtxRCut(cVtxR[0], cVtxR[1]); mFemtoDstInclSelector->SetVtxShift(cVtxXShift, cVtxYShift); mFemtoDstInclSelector->SetVtxVpdVzDiffCut(cVtxVpdVzDiff[0], cVtxVpdVzDiff[1]); mFemtoDstInclSelector->SetParticleMomentum(cParticleMom[0], cParticleMom[1]); mFemtoDstInclSelector->SetTrackDcaGlobal(cTrackDcaGlobal[0], cTrackDcaGlobal[1]); mFemtoDstInclSelector->SetTrackNHits(cTrackNHits[0], cTrackNHits[1]); mFemtoDstInclSelector->SetTrackNHitsFit(cTrackNHitsFit[0], cTrackNHitsFit[1]); mFemtoDstInclSelector->SetTrackEta(cTrackEta[0], cTrackEta[1]); mFemtoDstInclSelector->SetTrackFlag(cTrackFlag[0], cTrackFlag[1]); mFemtoDstInclSelector->SetCollisionTypeAuAu(isAuAu); mFemtoDstInclSelector->SetAuAuZdcCoincidenceEnergy(cZdcRefmultCorrection); mFemtoDstInclSelector->SetMuDstMaker(muDstMaker); //Inclusive selection //Kaons mFemtoDstInclSelector->SetSelectPions(false); mFemtoDstInclSelector->SetSelectProtons(false); mFemtoDstInclSelector->SetSelectKaons(cSelectKaons); mFemtoDstInclSelector->SetSelectTpcKaons(cSelectTpcKaons); mFemtoDstInclSelector->SetKaonTpcMom(cKaonTpcMom[0], cKaonTpcMom[1]); mFemtoDstInclSelector->SetKaonTpcNSigmaElectron(cKaonTpcNSigmaElectron[0],cKaonTpcNSigmaElectron[1]); mFemtoDstInclSelector->SetKaonTpcNSigmaPion(cKaonTpcNSigmaPion[0],cKaonTpcNSigmaPion[1]); mFemtoDstInclSelector->SetKaonTpcNSigmaKaon(cKaonTpcNSigmaKaon[0],cKaonTpcNSigmaKaon[1]); mFemtoDstInclSelector->SetKaonTpcNSigmaProton(cKaonTpcNSigmaProton[0],cKaonTpcNSigmaProton[1]); mFemtoDstInclSelector->SetSelectTofKaons(cSelectTofKaons); mFemtoDstInclSelector->SetKaonTofMom(cKaonTofMom[0],cKaonTofMom[1]); mFemtoDstInclSelector->SetKaonMassSqr(cKaonMassSqr[0],cKaonMassSqr[1]); //Chain initialization and loop over events mChain->Init(); Int_t iReturn = 0; Int_t mNEventsProcessed = 0; Float_t mPercentCounter = 0.05; 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 += mPercentCounter; mStopTime = time(0); mDiffTime = difftime(mStopTime, mStartTime); mFrac = (float)mDiffTime*(float)(mNEvents - iEvent)/(float)iEvent; mSubCounter++; std::cout << Form("Processing progress: %4.2f%%. Time left: %.1 sec", mProgress*100., mFrac) << std::endl; } mChain->Clear(); iReturn = mChain->Make(iEvent); if(iReturn != 0) { std::cout << "Error has been occured. Event processing has been stopped" << std::endl; break; } } //for(Int_t iEvent=0; iEventFinish(); delete mFemtoDstMaker; delete mChain; std::cout << "**************************" << std::endl << "* FemtoDstMaker *" << std::endl << "* Finish *" << std::endl << "**************************" << std::endl << endl; }