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