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_Unified(const Int_t Nevents=1,
00017 const Char_t *daqfile="/star/rcf/test/daq/2005/051/st_physics_adc_6051006_raw_1050001.daq",
00018 const Char_t *tagfile="/star/rcf/test/embedding/cuProductionMinBias/FullField/P07ic/2005/051/st_physics_adc_6051006_raw_1050001.tags.root",
00019 const Float_t pt_low=-0.1,
00020 const Float_t pt_high=5.0,
00021 const Int_t pid=9,
00022 const Double_t mult = 0.1,
00023 const Char_t *mode="strange",
00024 const Char_t *acc_mode="off" ) {
00025
00026 TString prodP07ib("P2005b DbV20070518 MakeEvent ITTF Iana ToF ssddat spt SsdIt SvtIt pmdRaw SCEbyE OGridLeak OShortR OSpaceZ2");
00027 TString geomP07ib("ry2005f");
00028
00029
00030 TString prodP07id20GeV("ry2001 in tpc_daq tpcI fcf ITTF noSsdIt ftpc IAna VFMinuit l3onl emcDY2 ZDCvtx Physics Idst l0 tags Tree evout hitfilt corr4 OSpaceZ2 OGridLeak3D");
00031 TString geomP07id20GeV("ry2001");
00032
00033
00034 TString prodP07idStGamma("DbV20071012 P2007 ITTF pmdReco -SsdIt -SvtIt -dstout");
00035 TString geomP07idStGamma("ry2007");
00036
00037
00038 TString prod = prodP07idStGamma;
00039 TString geom = geomP07idStGamma;
00040
00041 TString chain1Opt("in magF tpcDb NoDefault -ittf NoOutput adcOnly");
00042 TString chain2Opt("NoInput PrepEmbed gen_T geomT sim_T trs -ittf -tpc_daq nodefault");
00043 chain2Opt += " "; chain2Opt += geom;
00044 TString chain3Opt = prod;
00045 chain3Opt += " Embedding onlraw GeantOut MiniMcMk -in NoInput,useInTracker EmbeddingShortCut";
00046 chain3Opt += " "; chain3Opt += geom;
00047
00048 gROOT->LoadMacro("bfc.C");
00049 if (gClassTable->GetID("StBFChain") < 0) Load();
00050
00051 Chain = new StChain("Embedding");
00052
00053 bfc(-1,chain1Opt,daqfile);
00054 chain1 = chain;
00055 chain1->SetName("One");
00056 Chain->cd();
00057
00058 bfc(-1,chain2Opt);
00059 chain2 = chain;
00060 chain2->SetName("Two");
00061 Chain->cd();
00062 if (chain2->GetOption("TRS")){
00063 StTrsMaker *trsMk = (StTrsMaker *) chain2->GetMaker("Trs");
00064 if (! trsMk) {
00065 cout << "Cannot find Trs in chain2" << endl;
00066 return;
00067 }
00068 trsMk->setNormalFactor(2.67);
00069 }
00070
00071 gSystem->Load("StMixerMaker");
00072 StMixerMaker *mixer = new StMixerMaker("Mixer","daq","trs");
00073
00074 mixer->SetInput("Input1","StDAQReader");
00075 mixer->SetInput("Input2","Event");
00076
00077
00078
00079
00080 TString OutputFileName(gSystem->BaseName(daqfile));
00081 OutputFileName.ReplaceAll("*","");
00082 OutputFileName.ReplaceAll(".daq","");
00083 OutputFileName.Append("_emb.root");
00084 bfc(-1,chain3Opt,0,OutputFileName);
00085 chain3 = chain;
00086 chain3->SetName("Three");
00087 Chain->cd();
00088 StMaker *tpcdaqMk = chain3->GetMaker("tpc_raw");
00089 if(!tpcdaqMk ) {
00090 cout <<" Error: no tpc daq maker. End. "<<endl;
00091 return;
00092 }
00093 tpcdaqMk->SetMode(1);
00094 tpcdaqMk->SetInput("Event","MixerEvent");
00095 Chain->cd();
00096
00097 {
00098 TDatime t;
00099 gMessMgr->QAInfo() << Form("Run is started at Date/Time %i/%i",t.GetDate(),t.GetTime()) << endm;
00100 }
00101 gMessMgr->QAInfo() << Form("Run on %s in %s",gSystem->HostName(),gSystem->WorkingDirectory()) << endm;
00102 gMessMgr->QAInfo() << Form("with %s", Chain->GetCVS()) << endm;
00103
00104 StPrepEmbedMaker *embMk = (StPrepEmbedMaker *) Chain->Maker("PrepEmbed");
00105 if (! embMk) return;
00106 embMk->SetTagFile(tagfile);
00107
00108 embMk->SetOpt( pt_low, pt_high, -1.3, 1.3, 0., 6.28);
00109
00110 embMk->SetPartOpt( pid,mult);
00111 TAttr::SetDebug(0);
00112 Chain->SetAttr(".Privilege",0,"*" );
00113 Chain->SetAttr(".Privilege",1,"StBFChain::*" );
00114 Chain->SetAttr(".Privilege",1,"StIOInterFace::*" );
00115 Chain->SetAttr(".Privilege",1,"St_geant_Maker::*");
00116 Chain->SetAttr(".Privilege",1,"StPrepEmbedMaker::*");
00117
00118 if (Nevents < 0) return;
00119 Int_t iInit = Chain->Init();
00120 if (iInit >= kStEOF) {Chain->FatalErr(iInit,"on init"); return;}
00121 StMaker *treeMk = Chain->GetMaker("outputStream");
00122 Chain->EventLoop(Nevents,treeMk);
00123 gMessMgr->QAInfo() << "Run completed " << endm;
00124 gSystem->Exec("date");
00125 }
00126
00127
00128
00129
00130
00131
00132
00133
00134
00135
00136
00137
00138
00139
00140
00141
00142