00001
00002
00003
00004
00005
00006
00007
00008
00010
00011 class StChain;
00012 StChain *Chain=0;
00013 class StBFChain;
00014 StBFChain *chain1, *chain2, *chain3;
00015
00016 void bfcMixer_TpxAuAu200(const Int_t Nevents=100,
00017 const Char_t *daqfile="/star/rcf/test/daq/2010/embed/auau200_prod/st_physics_adc_11035021_raw_4420002.daq",
00018 const Char_t *tagfile="/star/rcf/test/daq/2010/embed/auau200_prod/st_physics_adc_11035021_raw_4420002.tags.root",
00019 const Double_t pt_low=0.1,
00020 const Double_t pt_high=5.0,
00021 const Double_t eta_low=-1.5,
00022 const Double_t eta_high=1.5,
00023 const Double_t vzlow = -150.0,
00024 const Double_t vzhigh = 150.0,
00025 const Int_t pid=9,
00026 const Double_t mult=100,
00027 const std::vector<Int_t> triggers = 0,
00028 const Char_t *prodName = "P10ihAuAu200",
00029 const Char_t* type = "FlatPt"){
00030
00031 TString prodP08iepp("DbV20081117 B2008a ITTF IAna ppOpt l3onl emcDY2 fpd ftpc trgd ZDCvtx NosvtIT NossdIT Corr4 OSpaceZ2 OGridLeak3D VFMCE -hitfilt");
00032
00033
00034
00035
00036 TString prodP08iedAu("DbV20090213 P2008 ITTF OSpaceZ2 OGridLeak3D beamLine VFMCE TpxClu -VFMinuit -hitfilt");
00037 TString prodP10iapp("DbV20091001 pp2009c TpcRS ITTF OSpaceZ2 OGridLeak3D beamLine, VFMCE TpcRS -VFMinuit -hitfilt");
00038
00039
00040 TString prodP10ihAuAu39("DbV20100909 P2010a,btof,BEmcChkStat,Corr4,OSpaceZ2,OGridLeak3D,VFMCE TpxClu -VFMinuit -hitfilt");
00041 TString prodP10ihAuAu11("DbV20100821 P2010a,btof,BEmcChkStat,Corr4,OSpaceZ2,OGridLeak3D,VFMCE TpxClu -VFMinuit -hitfilt");
00042 TString prodP10ihAuAu7("DbV20100821 P2010a,btof,BEmcChkStat,Corr4,OSpaceZ2,OGridLeak3D,VFMCE TpxClu -VFMinuit -hitfilt");
00043 TString prodP10ihAuAu200("DbV20101106 P2010a,btof,BEmcChkStat,Corr4,OSpaceZ2,OGridLeak3D,VFMCE TpxClu -VFMinuit -hitfilt");
00044
00045 TString geomP08ic("ry2008");
00046 TString geomP10ih("ry2010");
00047 TString chain1Opt("in,magF,tpcDb,NoDefault,TpxRaw,-ittf,NoOutput");
00048 TString chain2Opt("NoInput,PrepEmbed,gen_T,geomT,sim_T,TpcRS,-ittf,-tpc_daq,nodefault");
00049
00050 chain2Opt += " ";
00051
00052 TString chain3Opt("");
00053 if (prodName == "P08icpp") { chain3Opt = prodP08icpp; chain2Opt += geomP08ic; }
00054 else if (prodName == "P08iepp") { chain3Opt = prodP08iepp; chain2Opt += geomP08ic; }
00055 else if (prodName == "P08icAuAu9") { chain3Opt = prodP08icAuAu9; chain2Opt += geomP08ic; }
00056 else if (prodName == "P08icdAu") { chain3Opt = prodP08icdAu; chain2Opt += geomP08ic; }
00057 else if (prodName == "P08iedAu") { chain3Opt = prodP08iedAu; chain2Opt += geomP08ic; }
00058 else if (prodName == "P08icAuAu200") { chain3Opt = prodP08icAuAu200; chain2Opt += geomP08ic; }
00059 else if (prodName == "P10iapp") { chain3Opt = prodP10iapp; chain2Opt += geomP10ih; }
00060 else if (prodName == "P10ihAuAu39") { chain3Opt = prodP10ihAuAu39; chain2Opt += geomP10ih; }
00061 else if (prodName == "P10ihAuAu11") { chain3Opt = prodP10ihAuAu11; chain2Opt += geomP10ih; }
00062 else if (prodName == "P10ihAuAu7") { chain3Opt = prodP10ihAuAu7; chain2Opt += geomP10ih; }
00063 else if (prodName == "P10ihAuAu200") { chain3Opt = prodP10ihAuAu200; chain2Opt += geomP10ih; }
00064 else {
00065 cout << "Choice prodName " << prodName << " does not correspond to known chain. Processing impossible. " << endl;
00066 return;
00067 }
00068 chain3Opt += ",Embedding,TpcMixer,GeantOut,MiniMcMk,McAna,-in,NoInput,useInTracker";
00069 chain3Opt += ",";
00070
00071 if (prodName == "P08icpp") { chain3Opt += geomP08ic; }
00072 else if (prodName == "P08iepp") { chain3Opt += geomP08ic; }
00073 else if (prodName == "P08icAuAu9") { chain3Opt += geomP08ic; }
00074 else if (prodName == "P08icdAu") { chain3Opt += geomP08ic; }
00075 else if (prodName == "P08iedAu") { chain3Opt += geomP08ic; }
00076 else if (prodName == "P08icAuAu200") { chain3Opt += geomP08ic; }
00077 else if (prodName == "P10iapp") { chain3Opt += geomP10ih; }
00078 else if (prodName == "P10ihAuAu39") { chain3Opt += geomP10ih; }
00079 else if (prodName == "P10ihAuAu11") { chain3Opt += geomP10ih; }
00080 else if (prodName == "P10ihAuAu7") { chain3Opt += geomP10ih; }
00081 else if (prodName == "P10ihAuAu200") { chain3Opt += geomP10ih; }
00082 else {
00083 cout << "Choice prodName " << prodName << " does not correspond to known chain. Processing impossible. " << endl;
00084 return;
00085 }
00086
00087
00088 gROOT->LoadMacro("bfc.C");
00089 if (gClassTable->GetID("StBFChain") < 0) Load();
00090
00091 Chain = new StChain("Embedding");
00092
00093 bfc(-1,chain1Opt,daqfile);
00094 chain1 = chain;
00095 chain1->SetName("One");
00096 Chain->cd();
00097
00098 bfc(-1,chain2Opt);
00099 chain2 = chain;
00100 chain2->SetName("Two");
00101 Chain->cd();
00102 #if 0
00103 if (chain2->GetOption("TRS")){
00104 StTrsMaker *trsMk = (StTrsMaker *) chain2->GetMaker("Trs");
00105 if (! trsMk) {
00106 cout << "Cannot find Trs in chain2" << endl;
00107 return;
00108 }
00109 trsMk->setNormalFactor(1.32);
00110 trsMk->SetMode(0);
00111 }
00112 #endif
00113
00114
00115
00116
00117 TString OutputFileName(gSystem->BaseName(daqfile));
00118 OutputFileName.ReplaceAll("*","");
00119 OutputFileName.ReplaceAll(".daq","");
00120
00121 OutputFileName.Append(".root");
00122 bfc(-1,chain3Opt,0,OutputFileName);
00123 chain3 = chain;
00124 chain3->SetName("Three");
00125 Chain->cd();
00126
00127 StTpcMixerMaker *mixer = (StTpcMixerMaker *) chain3->Maker("TpcMixer");
00128 if( prodName == "P08icAuAu200")
00129 {
00130 mixer->SetInput("Input1","MixerEvent");
00131 }
00132 else
00133 {
00134 mixer->SetInput("Input1","TpxRaw/.data/Event");
00135 }
00136
00137
00138 if (chain2Opt.Contains("TpcRS",TString::kIgnoreCase)) {
00139 mixer->SetInput("Input2","TpcRS/Event");
00140 }else {
00141 mixer->SetInput("Input2","Trs/.const/Event");
00142 }
00143
00144 Chain->cd();
00145
00146
00147
00148
00149 gSystem->Load("StEmcSimulatorMaker");
00150 gSystem->Load("StEmcMixerMaker");
00151 gSystem->Load("StEEmcSimulatorMaker");
00152
00153 StMcEventMaker* mcEventMaker = new StMcEventMaker();
00154 StEmcSimulatorMaker *bemcSim = new StEmcSimulatorMaker();
00155 StEmcMixerMaker *bemcMixer = new StEmcMixerMaker();
00156 chain3->AddAfter("emcRaw",bemcMixer);
00157 chain3->AddAfter("emcRaw",bemcSim);
00158 chain3->AddAfter("emcRaw",mcEventMaker);
00159 bemcMixer->SetDebug(0);
00160
00161
00162
00163 StEEmcFastMaker *eemcFastSim = new StEEmcFastMaker();
00164 StEEmcMixerMaker *eemcMixer = new StEEmcMixerMaker();
00165
00166
00167
00168
00169 chain3->AddAfter("emcRaw",eemcMixer);
00170 chain3->AddAfter("emcRaw",eemcFastSim);
00171
00172 eemcFastSim->SetEmbeddingMode();
00173
00174
00175
00176 bool useEndcapSlowSim = true;
00177 if(useEndcapSlowSim) {
00178 StEEmcSlowMaker *slowSim=new StEEmcSlowMaker();
00179 chain3->AddAfter("EEmcFastSim",slowSim);
00180 slowSim->setEmbeddingMode();
00181 }
00182
00183
00184
00185
00186 {
00187 TDatime t;
00188 gMessMgr->QAInfo() << Form("Run is started at Date/Time %i/%i",t.GetDate(),t.GetTime()) << endm;
00189 }
00190 gMessMgr->QAInfo() << Form("Run on %s in %s",gSystem->HostName(),gSystem->WorkingDirectory()) << endm;
00191 gMessMgr->QAInfo() << Form("with %s", Chain->GetCVS()) << endm;
00192
00193 StPrepEmbedMaker *embMk = (StPrepEmbedMaker *) Chain->Maker("PrepEmbed");
00194 if (! embMk) return;
00195 cout << "bfcMixer: Setting PID: "<<pid<<endl;
00196 embMk->SetTagFile(tagfile);
00197
00198 embMk->SetOpt( pt_low, pt_high, eta_low, eta_high, 0., 6.283185, type);
00199
00200 embMk->SetPartOpt( pid,mult);
00201
00202
00203 embMk->SetSkipMode(kFALSE);
00204
00205
00206
00207
00208 if ( !triggers.empty() ){
00209 for(std::vector<Int_t>::iterator iter = triggers.begin(); iter != triggers.end(); iter++){
00210 embMk->SetTrgOpt((*iter)) ;
00211 }
00212 }
00213
00214
00215 embMk->SetZVertexCut(vzlow, vzhigh) ;
00216
00217 TAttr::SetDebug(0);
00218 Chain->SetAttr(".Privilege",0,"*" );
00219 Chain->SetAttr(".Privilege",1,"StBFChain::*" );
00220 Chain->SetAttr(".Privilege",1,"StIOInterFace::*" );
00221 Chain->SetAttr(".Privilege",1,"St_geant_Maker::*");
00222 Chain->SetAttr(".Privilege",1,"StPrepEmbedMaker::*");
00223
00224 if (Nevents < 0) return;
00225 Int_t iInit = Chain->Init();
00226 if (iInit >= kStEOF) {Chain->FatalErr(iInit,"on init"); return;}
00227 StMaker *treeMk = Chain->GetMaker("outputStream");
00228 Chain->EventLoop(Nevents,treeMk);
00229 gMessMgr->QAInfo() << "Run completed " << endm;
00230 gSystem->Exec("date");
00231 }
00232
00233