00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00020
00021 class StChain;
00022 StChain* Chain = 0;
00023
00024 class StBFChain;
00025 StBFChain* chain1 = 0;
00026 StBFChain* chain2 = 0;
00027 StBFChain* chain3 = 0;
00028
00029
00030 void bfcMixer_Jet2(const Int_t Nevents = 1000,
00031 const Char_t* daqfile = "/star/data03/daq/2009/WembAll/st_zerobias_adc_10085134_raw_4450001.daq",
00032 const Char_t* fzdfile = "/star/institutions/uky/gdwebb/pp500Embedding2009/output/pTbin_4_5/st_zerobias_adc_10085134_raw_4450001.fzd",
00033 const Char_t* prodName = "P09igpp500")
00034 {
00035
00036 TString prodP08iepp("DbV20081117 B2008a ITTF IAna ppOpt l3onl emcDY2 fpd ftpc trgd ZDCvtx NosvtIT NossdIT Corr4 OSpaceZ2 OGridLeak3D VFMCE -hitfilt");
00037 TString prodP08iedAu("DbV20090213 P2008 ITTF OSpaceZ2 OGridLeak3D beamLine VFMCE TpxClu -VFMinuit -hitfilt");
00038 TString prodP10iapp("DbV20091001 pp2009c TpcRS ITTF OSpaceZ2 OGridLeak3D beamLine, VFMCE TpcRS -VFMinuit -hitfilt");
00039
00040
00041 TString prodP10ihAuAu39("DbV20100909 P2010a,btof,BEmcChkStat,Corr4,OSpaceZ2,OGridLeak3D,VFMCE TpxClu -VFMinuit -hitfilt");
00042 TString prodP10ihAuAu11("DbV20100821 P2010a,btof,BEmcChkStat,Corr4,OSpaceZ2,OGridLeak3D,VFMCE TpxClu -VFMinuit -hitfilt");
00043 TString prodP10ihAuAu7("DbV20100821 P2010a,btof,BEmcChkStat,Corr4,OSpaceZ2,OGridLeak3D,VFMCE TpxClu -VFMinuit -hitfilt");
00044
00045
00046 TString prodP09igpp500("DbV20091225 pp2009c ITTF VFPPVnoCTB beamLine BEmcChkStat btof Corr4 OSpaceZ2 OGridLeak3D -dstout -evout");
00047
00048
00049 TString prodP10icpp200("DbV20100130 pp2009c ITTF VFPPVnoCTB beamLine BEmcChkStat btof fmsdat Corr4 OSpaceZ2 OGridLeak3D");
00050
00051
00052 prodP09igpp500 += " TpxClu -VFMinuit VFPPVnoCTB beamLine -hitfilt";
00053 prodP10icpp200 += " TpxClu -VFMinuit VFPPVnoCTB beamLine -hitfilt";
00054
00055 TString geomP08ic("ry2008");
00056 TString geomP10ih("ry2010");
00057 TString geomP09ig("ry2009a");
00058 TString geomP10ic("ry2009a");
00059 TString chain1Opt("in,magF,tpcDb,NoDefault,TpxRaw,-ittf,NoOutput");
00060 TString chain2Opt("fzin,gen_T,geomT,sim_T,TpcRS,-ittf,-tpc_daq,nodefault");
00061 chain2Opt += " ";
00062
00063 TString chain3Opt;
00064 if (prodName == "P08icpp") { chain3Opt = prodP08icpp; chain2Opt += geomP08ic; }
00065 else if (prodName == "P08iepp") { chain3Opt = prodP08iepp; chain2Opt += geomP08ic; }
00066 else if (prodName == "P08icAuAu9") { chain3Opt = prodP08icAuAu9; chain2Opt += geomP08ic; }
00067 else if (prodName == "P08icdAu") { chain3Opt = prodP08icdAu; chain2Opt += geomP08ic; }
00068 else if (prodName == "P08iedAu") { chain3Opt = prodP08iedAu; chain2Opt += geomP08ic; }
00069 else if (prodName == "P08icAuAu200") { chain3Opt = prodP08icAuAu200; chain2Opt += geomP08ic; }
00070 else if (prodName == "P10iapp") { chain3Opt = prodP10iapp; chain2Opt += geomP10ih; }
00071 else if (prodName == "P10ihAuAu39") { chain3Opt = prodP10ihAuAu39; chain2Opt += geomP10ih; }
00072 else if (prodName == "P10ihAuAu11") { chain3Opt = prodP10ihAuAu11; chain2Opt += geomP10ih; }
00073 else if (prodName == "P10ihAuAu7") { chain3Opt = prodP10ihAuAu7; chain2Opt += geomP10ih; }
00074 else if (prodName == "P09igpp500") { chain3Opt = prodP09igpp500; chain2Opt += geomP09ig; }
00075 else if (prodName == "P10icpp200") { chain3Opt = prodP10icpp200; chain2Opt += geomP10ic; }
00076 else {
00077 cout << "Choice prodName " << prodName << " does not correspond to known chain. Processing impossible." << endl;
00078 return;
00079 }
00080 chain3Opt += ",Embedding,TpcMixer,GeantOut,MiniMcMk,McAna,-in,NoInput,useInTracker";
00081 chain3Opt += ",";
00082
00083 if (prodName == "P08icpp") { chain3Opt += geomP08ic; }
00084 else if (prodName == "P08iepp") { chain3Opt += geomP08ic; }
00085 else if (prodName == "P08icAuAu9") { chain3Opt += geomP08ic; }
00086 else if (prodName == "P08icdAu") { chain3Opt += geomP08ic; }
00087 else if (prodName == "P08iedAu") { chain3Opt += geomP08ic; }
00088 else if (prodName == "P08icAuAu200") { chain3Opt += geomP08ic; }
00089 else if (prodName == "P10iapp") { chain3Opt += geomP10ih; }
00090 else if (prodName == "P10ihAuAu39") { chain3Opt += geomP10ih; }
00091 else if (prodName == "P10ihAuAu11") { chain3Opt += geomP10ih; }
00092 else if (prodName == "P10ihAuAu7") { chain3Opt += geomP10ih; }
00093 else if (prodName == "P09igpp500") { chain3Opt += geomP09ig; }
00094 else if (prodName == "P10icpp200") { chain3Opt += geomP10ic; }
00095 else {
00096 cout << "Choice prodName " << prodName << " does not correspond to known chain. Processing impossible. " << endl;
00097 return;
00098 }
00099
00100
00101 chain3Opt += ",emcSim";
00102
00103
00104 chain3Opt += ",EEfs";
00105
00106
00107 gROOT->LoadMacro("bfc.C");
00108 if (gClassTable->GetID("StBFChain") < 0) Load();
00109
00110 Chain = new StChain("Embedding");
00111
00112 bfc(-1,chain1Opt,daqfile);
00113 chain1 = chain;
00114 chain1->SetName("One");
00115 Chain->cd();
00116
00117 bfc(-1,chain2Opt,fzdfile);
00118 chain2 = chain;
00119 chain2->SetName("Two");
00120 Chain->cd();
00121 if (chain2->GetOption("TRS")){
00122 StTrsMaker *trsMk = (StTrsMaker *) chain2->GetMaker("Trs");
00123 if (!trsMk) {
00124 cout << "Cannot find Trs in chain2" << endl;
00125 return;
00126 }
00127 trsMk->setNormalFactor(1.32);
00128 trsMk->SetMode(0);
00129 }
00130
00131
00132
00133
00134 TString OutputFileName(gSystem->BaseName(fzdfile));
00135 OutputFileName.ReplaceAll("*","");
00136 OutputFileName.ReplaceAll(".fzd","");
00137
00138 OutputFileName.Append(".root");
00139 bfc(-1,chain3Opt,0,OutputFileName);
00140 chain3 = chain;
00141 chain3->SetName("Three");
00142 Chain->cd();
00143
00144
00145
00146 StTpcHitMaker* TpxRaw = (StTpcHitMaker*)chain1->GetMaker("TpxRaw");
00147 StTpcRSMaker* TpcRS = (StTpcRSMaker*)chain2->GetMaker("TpcRS");
00148 chain3->AddBefore("TpcMixer",TpcRS);
00149 chain3->AddBefore("TpcMixer",TpxRaw);
00150
00151 StTpcMixerMaker *mixer = (StTpcMixerMaker *) chain3->Maker("TpcMixer");
00152 if( prodName == "P08icAuAu200")
00153 {
00154 mixer->SetInput("Input1","MixerEvent");
00155 }
00156 else
00157 {
00158 mixer->SetInput("Input1","TpxRaw/.data/Event");
00159 }
00160
00161 if (chain2Opt.Contains("TpcRS",TString::kIgnoreCase)) {
00162 mixer->SetInput("Input2","TpcRS/Event");
00163 } else {
00164 mixer->SetInput("Input2","Trs/.const/Event");
00165 }
00166 Chain->cd();
00167
00168
00169
00170 StEmcRawMaker* emcRaw = (StEmcRawMaker*)chain3->GetMaker("emcRaw");
00171 emcRaw->getBemcRaw()->saveAllStEvent(true);
00172 gSystem->Load("StEmcMixerMaker");
00173 StEmcMixerMaker* bemcMixer = new StEmcMixerMaker;
00174 chain3->AddAfter("EmcSimulator",bemcMixer);
00175
00176 StEEmcFastMaker* eefs = (StEEmcFastMaker*)chain3->GetMaker("eefs");
00177 eefs->SetEmcCollectionLocal(false);
00178 eefs->UseFullTower(true);
00179 StEEmcSlowMaker* eess = new StEEmcSlowMaker;
00180 eess->setEmbeddingMode(false);
00181 eess->setAddPed(true);
00182 eess->setSmearPed(true);
00183 eess->setDropBad(true);
00184 eess->setOverwrite(true);
00185 eess->setSource("StEvent");
00186
00187
00188
00189
00190
00191
00192
00193
00194
00195
00196
00197
00198
00199
00200
00201
00202
00203
00204 chain3->AddAfter("eefs",chain3->GetMaker("tpcChain"));
00205
00206 chain3->AddAfter("eefs",eess);
00207
00208
00209
00210 gSystem->Load("StJetSkimEvent");
00211 gSystem->Load("StBfcTriggerFilterMaker");
00212
00213 StPythiaEventMaker* pythia = new StPythiaEventMaker;
00214 TString pyfile = gSystem->BaseName(fzdfile);
00215 pyfile.ReplaceAll(".fzd",".pythia.root");
00216 pythia->SetPythiaFile(pyfile);
00217 chain3->AddAfter("geant",pythia);
00218
00219
00220 gSystem->Load("StTriggerUtilities");
00221 StTriggerSimuMaker* trgsim = new StTriggerSimuMaker;
00222 trgsim->setMC(1);
00223
00224
00225
00226 trgsim->useBemc();
00227 trgsim->bemc->setConfig(StBemcTriggerSimu::kOnline);
00228 trgsim->useEemc();
00229 trgsim->eemc->setSource("StEvent");
00230
00231 trgsim->bemc->setBarrelJetPatchTh0(19);
00232 trgsim->bemc->setBarrelJetPatchTh1(26);
00233 trgsim->bemc->setBarrelJetPatchTh2(34);
00234
00235 trgsim->emc->setOverlapJetPatchTh0(18);
00236 trgsim->emc->setOverlapJetPatchTh1(25);
00237 trgsim->emc->setOverlapJetPatchTh2(33);
00238
00239 trgsim->eemc->setEndcapJetPatchTh0(17);
00240 trgsim->eemc->setEndcapJetPatchTh1(24);
00241 trgsim->eemc->setEndcapJetPatchTh2(31);
00242
00243 trgsim->bemc->setBarrelHighTowerTh0(11);
00244 trgsim->bemc->setBarrelHighTowerTh1(15);
00245 trgsim->bemc->setBarrelHighTowerTh2(18);
00246 trgsim->bemc->setBarrelHighTowerTh3(24);
00247
00248 trgsim->eemc->setEndcapHighTowerTh0(16);
00249 trgsim->eemc->setEndcapHighTowerTh1(25);
00250
00251 StBfcTriggerFilterMaker* trgfilt = new StBfcTriggerFilterMaker;
00252
00253 trgfilt->SetJP1();
00254 trgfilt->SetAJP();
00255 trgfilt->SetBHT3();
00256
00257
00258
00259
00260 chain3->AddBefore("tpcChain",trgsim);
00261 chain3->AddBefore("tpcChain",trgfilt);
00262 #if 0
00263
00264 {
00265 TDatime t;
00266 gMessMgr->QAInfo() << Form("Run is started at Date/Time %i/%i",t.GetDate(),t.GetTime()) << endm;
00267 }
00268 gMessMgr->QAInfo() << Form("Run on %s in %s",gSystem->HostName(),gSystem->WorkingDirectory()) << endm;
00269 gMessMgr->QAInfo() << Form("with %s", Chain->GetCVS()) << endm;
00270
00271 TAttr::SetDebug(0);
00272 Chain->SetAttr(".Privilege",0,"*" );
00273 Chain->SetAttr(".Privilege",1,"StBFChain::*" );
00274 Chain->SetAttr(".Privilege",1,"StIOInterFace::*" );
00275 Chain->SetAttr(".Privilege",1,"St_geant_Maker::*");
00276
00277
00278 if (Nevents < 0) return;
00279 Int_t iInit = Chain->Init();
00280 if (iInit >= kStEOF) {Chain->FatalErr(iInit,"on init"); return;}
00281 StMaker *treeMk = Chain->GetMaker("outputStream");
00282 cout << "Order of makers in BFCMIXER:" << endl;
00283 StMaker::lsMakers(Chain);
00284 Chain->EventLoop(Nevents,treeMk);
00285 gMessMgr->QAInfo() << "Run completed " << endm;
00286 gSystem->Exec("date");
00287 #endif
00288 #if 0
00289
00290 int istat = chain->Init();
00291 if (istat) {
00292 cout << "Chain initialization failed" << endl;
00293 chain->Fatal(istat,"during Init()");
00294 }
00295
00296
00297 cout << "Order of makers in BFC:" << endl;
00298 StMaker::lsMakers(chain);
00299 chain->EventLoop(Nevents);
00300 #endif
00301 TString trgfile = gSystem->BaseName(fzdfile);
00302 trgfile.ReplaceAll(".fzd",".trig.root");
00303 TFile* ofile = TFile::Open(trgfile,"recreate");
00304 assert(ofile);
00305 TH2F* hBarrelHighTowerSimu = new TH2F("hBarrelHighTowerSimu","BEMC high tower simu;trigger patch;high tower",300,0,300,64,0,64);
00306 TH2F* hBarrelPatchSumSimu = new TH2F("hBarrelPatchSumSimu","BEMC patch sum simu;trigger patch;patch sum",300,0,300,64,0,64);
00307 TH2F* hEndcapHighTowerSimu = new TH2F("hEndcapHighTowerSimu","EEMC high tower simu;trigger patch;high tower",90,0,90,64,0,64);
00308 TH2F* hEndcapPatchSumSimu = new TH2F("hEndcapPatchSumSimu","EEMC patch sum simu;trigger patch;patch sum",90,0,90,64,0,64);
00309 TH2F* hBarrelJetPatchSimu = new TH2F("hBarrelJetPatchSimu",";jet patch;adc",18,0,18,160,0,160);
00310 TH2F* hEndcapJetPatchSimu = new TH2F("hEndcapJetPatchSimu",";jet patch;adc",6,0,6,160,0,160);
00311 TH2F* hOverlapJetPatchSimu = new TH2F("hOverlapJetPatchSimu",";jet patch;adc",6,0,6,160,0,160);
00312
00313 Chain->Init();
00314 cout << "Order of makers in BFCMIXER:" << endl;
00315 StMaker::lsMakers(Chain);
00316
00317 for (int iEvent = 1; iEvent <= Nevents; ++iEvent) {
00318 Chain->Clear();
00319 int status = Chain->Make(iEvent);
00320 if (status == kStSkip) continue;
00321 if (status % 10 == kStEOF || status % 10 == kStFatal) break;
00322
00323 for (int triggerpatch = 0; triggerpatch < 300; ++triggerpatch) {
00324 hBarrelHighTowerSimu->Fill(triggerpatch,trgsim->bemc->getBEMC_FEE_HT_ADC()[triggerpatch]);
00325 hBarrelPatchSumSimu->Fill(triggerpatch,trgsim->bemc->getBEMC_FEE_TP_ADC()[triggerpatch]);
00326 }
00327
00328 for (int jetpatch = 0; jetpatch < 18; ++jetpatch) {
00329 hBarrelJetPatchSimu->Fill(jetpatch,trgsim->bemc->barrelJetPatchAdc(jetpatch));
00330 }
00331
00332 for (int triggerpatch = 0; triggerpatch < 90; ++triggerpatch) {
00333 hEndcapHighTowerSimu->Fill(triggerpatch,trgsim->eemc->getOutHT(triggerpatch));
00334 hEndcapPatchSumSimu->Fill(triggerpatch,trgsim->eemc->getOutTPsum(triggerpatch));
00335 }
00336
00337 for (int jetpatch = 0; jetpatch < 6; ++jetpatch) {
00338 hEndcapJetPatchSimu->Fill(jetpatch,trgsim->eemc->endcapJetPatchAdc(jetpatch));
00339 }
00340
00341 for (int i = 0; i < 2; ++i) {
00342 int jetpatch, adc;
00343 trgsim->emc->getOverlapJetPatchAdc(i,jetpatch,adc);
00344 hOverlapJetPatchSimu->Fill(jetpatch,adc);
00345 }
00346 }
00347 ofile->Write();
00348 ofile->Close();
00349 }