StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
bitcheck.C
1 TCanvas* c1;
2 static const int NX=2;
3 TH1F* HF[NX*2+1];
4 TH1F* HB[NX*2+1];
5 
6 void bitcheck(int run=16043074, int file=1, int nEvents=10000, int useDSM=1, int plt=0){
7  char name[200]; sprintf(name,"trg/run%d.%d.dat",run,file);
8  cout << "Reading up to "<<nEvents<<" events from "<<name<<endl;
9 
10  LoadLibs();
11 
12  StChain* chain = new StChain;
13  StIOMaker* iomaker = new StIOMaker("IO","r", name);
14  StTriggerDataMaker* trgmaker = new StTriggerDataMaker();
15  //trgmaker->setDebug(1);
16  StFmsTriggerMaker* fmstrg = new StFmsTriggerMaker();
17  fmstrg->useTrgData();
18  fmstrg->forceRunNumber(run);
19  if(useDSM==0) fmstrg->useQTSim();
20  if(useDSM==1) fmstrg->useDsmData();
21  StFmsBitCheckMaker* bitcheck = new StFmsBitCheckMaker();
22  bitcheck->setRun(run);
23  bitcheck->setPrint(20);
24  StFmsTrgQaMaker* qa = new StFmsTrgQaMaker();
25  qa->setRun(run);
26 
27  chain->Init();
28 
29  if(plt==1){
30  c1=new TCanvas("FMS","FMS",700,800);
31  gStyle->SetOptStat(111110);
32  gStyle->SetStatW(0.4); gStyle->SetStatH(0.4);
33  for(int i=0; i<=NX*2; i++){
34  int x=i-NX;
35  char tt[100];
36  sprintf(tt,"FMS xing=%d",x);
37  HF[i]=new TH1F(tt,tt,50,0,5000); HF[i]->SetFillColor(kRed);
38  sprintf(tt,"BBC xing=%d",x);
39  HB[i]=new TH1F(tt,tt,50,0,5000); HB[i]->SetFillColor(kRed);
40  }
41  }
42 
43  unsigned long long bxkeep=0;
44  for(int iev=0; iev<nEvents; iev++){
45  if(iev%100==0) cout << "****event="<<iev<<endl;
46  chain->Clear();
47  int ierr=chain->Make();
48  if(ierr>1) break;
49 
50  if(plt==1){
51  StTriggerData *td = (StTriggerData*)chain->GetDataSet("StTriggerData")->GetObject();
52  int npre=td->numberOfPreXing();
53  int npost=td->numberOfPostXing();
54  for(int i=0; i<=2*NX; i++){
55  int x=i-NX;
56  if(-x>npre || x>npost) continue;
57  int sumF=0, sumB=0;
58  for(int crt=1; crt<=4; crt++){
59  for(int adr=0; adr<16; adr++){
60  for(int ch=0; ch<32; ch++){
61  sumF+=td->fmsADC(crt,adr,ch,x);
62  }
63  }
64  }
65  for(int ch=0; ch<16; ch++){
66  sumB+=td->bbcADC(0,ch,x);
67  sumB+=td->bbcADC(1,ch,x);
68  }
69  HF[i]->Fill(sumF);
70  HB[i]->Fill(sumB);
71  }
72  }
73  }
74  chain->Finish();
75 
76  if(plt==1){
77  c1->Divide(2,NX*2+1);
78  for(int i=0; i<=2*NX; i++){
79  TVirtualPad *pad1 = c1->cd(i*2+1); pad1->SetLogy(); HF[i]->Draw();
80  TVirtualPad *pad2 = c1->cd(i*2+2); pad2->SetLogy(); HB[i]->Draw();
81  }
82  c1->Update();
83  char fname[100];
84  sprintf(fname,"fms_%d.png",run);
85  c1->SaveAs(fname);
86  }
87 
88  delete chain;
89 }
90 
91 void LoadLibs() {
92  gROOT->Macro("loadMuDst.C");
93  gSystem->Load("libPhysics");
94  gSystem->Load("St_base");
95  gSystem->Load("StChain");
96  gSystem->Load("StUtilities");
97  gSystem->Load("StEvent");
98  gSystem->Load("libStDb_Tables.so");
99  gSystem->Load("StDbLib.so");
100  gSystem->Load("St_db_Maker");
101  gSystem->Load("StDbBroker");
102  //gSystem->Load("StFmsDbMaker");
103  gSystem->Load("StFmsTriggerMaker");
104 };
virtual void Clear(Option_t *option="")
User defined functions.
Definition: StChain.cxx:77
virtual Int_t Finish()
Definition: StChain.cxx:85
virtual TObject * GetObject() const
The depricated method (left here for the sake of the backward compatibility)
Definition: TDataSet.cxx:428
virtual Int_t Make()
Definition: StChain.cxx:110