StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
jpsi_ana.C
1 //usr/bin/env root4star -l -b -q $0'('$1')'; exit $?
2 // that is a valid shebang to run script as executable, but with only one arg
3 
4 
5 // Run very fast fwd tracking
6 // generate some input data using genfzd
7 
8 TFile *output = 0;
9 
10 void jpsi_ana( int n = 5, // nEvents to run
11  string outputName = "stFwdTrackMaker_ideal_jpsi.root",
12  bool useFstForSeedFinding = false, // use FTT (default) or FST for track finding
13  bool enableTrackRefit = true, // Enable track refit (default off)
14  bool realisticSim = false, // enables data-like mode, real track finding and fitting without MC seed
15  char *inFile = "jpsi.fzd"
16  ) {
17  cout << "Running " << n << " events from " << inFile << endl;
18  const char *geom = "y2023";
19  TString _geom = geom;
20 
21  // Switches for common options
22  bool SiIneff = false;
23  bool useConstBz = false;
24  bool useFCS = true;
25 
26 
27  // Setup the chain for reading an FZD
28  TString _chain;
29  if ( useFCS )
30  _chain = Form("fzin %s sdt20211016 fstFastSim fcsSim fcsWFF fcsCluster fwdTrack MakeEvent StEvent ReverseField agml usexgeom bigbig evout cmudst tree", _geom.Data());
31  else
32  _chain = Form("fzin %s sdt20211016 MakeEvent StEvent ReverseField agml usexgeom bigbig fstFastSim fcsSim fwdTrack evout cmudst tree", _geom.Data());
33 
34  gSystem->Load( "libStarRoot.so" );
35  gROOT->SetMacroPath(".:/star-sw/StRoot/macros/:./StRoot/macros:./StRoot/macros/graphics:./StRoot/macros/analysis:./StRoot/macros/test:./StRoot/macros/examples:./StRoot/macros/html:./StRoot/macros/qa:./StRoot/macros/calib:./StRoot/macros/mudst:/afs/rhic.bnl.gov/star/packages/DEV/StRoot/macros:/afs/rhic.bnl.gov/star/packages/DEV/StRoot/macros/graphics:/afs/rhic.bnl.gov/star/packages/DEV/StRoot/macros/analysis:/afs/rhic.bnl.gov/star/packages/DEV/StRoot/macros/test:/afs/rhic.bnl.gov/star/packages/DEV/StRoot/macros/examples:/afs/rhic.bnl.gov/star/packages/DEV/StRoot/macros/html:/afs/rhic.bnl.gov/star/packages/DEV/StRoot/macros/qa:/afs/rhic.bnl.gov/star/packages/DEV/StRoot/macros/calib:/afs/rhic.bnl.gov/star/packages/DEV/StRoot/macros/mudst:/afs/rhic.bnl.gov/star/ROOT/36/5.34.38/.sl73_x8664_gcc485/rootdeb/macros:/afs/rhic.bnl.gov/star/ROOT/36/5.34.38/.sl73_x8664_gcc485/rootdeb/tutorials");
36  gROOT->LoadMacro("bfc.C");
37  bfc(-1, _chain, inFile);
38 
39  if ( useConstBz )
40  StarMagField::setConstBz(true);
41 
42  gSystem->Load( "libStFttSimMaker" );
43  gSystem->Load( "libStFcsTrackMatchMaker" );
44 
45  // FCS setup, if included
46  if (useFCS) {
47 
48  StFcsDbMaker* fcsdbmkr = (StFcsDbMaker*) chain->GetMaker("fcsDbMkr");
49  cout << "fcsdbmkr="<<fcsdbmkr<<endl;
50  StFcsDb* fcsdb = (StFcsDb*) chain->GetDataSet("fcsDb");
51  cout << "fcsdb="<<fcsdb<<endl;
52  //fcsdbmkr->setDbAccess(1);
53 
54  // Configure FCS simulator
55  StFcsFastSimulatorMaker *fcssim = (StFcsFastSimulatorMaker*) chain->GetMaker("fcsSim");
56  fcssim->setDebug(1);
57  //fcssim->setLeakyHcal(0);
58 
59  StFcsWaveformFitMaker *fcsWFF= (StFcsWaveformFitMaker*) chain->GetMaker("StFcsWaveformFitMaker");
60  fcsWFF->setEnergySelect(0);
61 
62  StFcsClusterMaker *fcsclu = (StFcsClusterMaker*) chain->GetMaker("StFcsClusterMaker");
63  fcsclu->setDebug(1);
64  }
65 
66  // {
67  gSystem->Load("StFwdUtils.so");
68  // StFwdJPsiMaker *fwdJPsi = new StFwdJPsiMaker();
69  // fwdJPsi->SetDebug();
70  // chain->AddMaker(fwdJPsi);
71  // goto chain_loop;
72  // }
73 
74 
75  // Configure FST FastSim
76  TString qaoutname(gSystem->BaseName(inFile));
77  qaoutname.ReplaceAll(".fzd", ".FastSimu.QA.root");
78  StFstFastSimMaker *fstFastSim = (StFstFastSimMaker*) chain->GetMaker( "fstFastSim" );;
79 
80  if (SiIneff)
81  fstFastSim->SetInEfficiency(0.1); // inefficiency of Si
82 
83  fstFastSim->SetQAFileName(qaoutname);
84 
85  cout << "Adding StFstFastSimMaker to chain" << endl;
86  chain->AddMaker(fstFastSim);
87 
88 
89  // Configure the Forward Tracker
90  StFwdTrackMaker * fwdTrack = (StFwdTrackMaker*) chain->GetMaker( "fwdTrack" );
91 
92  // config file set here for ideal simulation
93  if (!realisticSim){
94  cout << "Configured for ideal simulation (MC finding + MC mom seed)" << endl;
95  fwdTrack->setConfigForIdealSim( );
96  } else {
97  cout << "Configured for realistic simulation" << endl;
98  fwdTrack->setConfigForRealisticSim( );
99  cout << "Configured for realistic simulation DONE" << endl;
100  }
101 
102  if (useFstForSeedFinding)
103  fwdTrack->setSeedFindingWithFst();
104  else
105  fwdTrack->setSeedFindingWithFtt();
106 
107  fwdTrack->setTrackRefit( enableTrackRefit );
108  fwdTrack->setOutputFilename( outputName );
109  fwdTrack->SetGenerateTree( true );
110  fwdTrack->SetGenerateHistograms( true );
111  fwdTrack->SetDebug();
112 
113  cout << "fwd tracker setup" << endl;
114 
115 
116  if (!useFCS){
117  StFwdAnalysisMaker *fwdAna = new StFwdAnalysisMaker();
118  fwdAna->SetDebug();
119  chain->AddAfter("fwdTrack", fwdAna);
120  }
121 
122  StMuDstMaker * muDstMaker = (StMuDstMaker*)chain->GetMaker( "MuDst" );
123  if (useFCS) {
124  // FwdTrack and FcsCluster assciation
125  gSystem->Load("StFcsTrackMatchMaker");
127  match->setMaxDistance(6,10);
128  match->setFileName("fcstrk.root");
129  match->SetDebug();
130  chain->AddMaker(match);
131 
132  StFwdAnalysisMaker *fwdAna = new StFwdAnalysisMaker();
133  fwdAna->SetDebug();
134  chain->AddAfter("FcsTrkMatch", fwdAna);
135 
136  StFwdJPsiMaker *fwdJPsi = new StFwdJPsiMaker();
137  fwdJPsi->SetDebug();
138  chain->AddAfter("FcsTrkMatch", fwdJPsi);
139 
140  gSystem->Load("StFcsDiLeptonMaker");
141  StFcsDiLeptonMaker *dilep = new StFcsDiLeptonMaker;
142  //TString dilepfile(outfile); dilepfile.ReplaceAll(".root",".dilep.root");
143  dilep->setFileName("dilep.root");//dilepfile.Data());
144  //chain->AddAfter("FcsTrkMatch", dilep);
145 
146  // Produce MuDst output
147  chain->AddAfter( "FcsTrkMatch", muDstMaker );
148  } else {
149  chain->AddAfter( "fwdAna", muDstMaker );
150  }
151 
152 
153 
154 chain_loop:
155  chain->Init();
156 
157  //_____________________________________________________________________________
158  //
159  // MAIN EVENT LOOP
160  //_____________________________________________________________________________
161  for (int i = 0; i < n; i++) {
162 
163  cout << "--------->START EVENT: " << i << endl;
164 
165  chain->Clear();
166  if (kStOK != chain->Make())
167  break;
168 
169 
170  // StMuDst * mds = muDstMaker->muDst();
171  // StMuFwdTrackCollection * ftc = mds->muFwdTrackCollection();
172  // cout << "Number of StMuFwdTracks: " << ftc->numberOfFwdTracks() << endl;
173  // for ( size_t iTrack = 0; iTrack < ftc->numberOfFwdTracks(); iTrack++ ){
174  // StMuFwdTrack * muFwdTrack = ftc->getFwdTrack( iTrack );
175  // cout << "muFwdTrack->mPt = " << muFwdTrack->momentum().Pt() << endl;
176 
177  // }
178 
179  cout << "<---------- END EVENT" << endl;
180  } // event loop
181 }
virtual void Clear(Option_t *option="")
User defined functions.
Definition: StChain.cxx:77
void setSeedFindingWithFtt()
Use Ftt hits in the Seed Finding.
void setOutputFilename(std::string fn)
Set the filename for output ROOT file.
virtual Int_t Make()
Definition: StChain.cxx:110
Definition: Stypes.h:40
void setTrackRefit(bool refit=true)
Sets the tracking to refit This adds compatible hits from whichever detector was NOT used in seed fin...
void setSeedFindingWithFst()
Use Fst hits in the Seed Finding.