//*-- AUTHOR : B. Spruck //_HADES_CLASS_DESCRIPTION //////////////////////////////////////////////////////////////////////////// // HOnlineHodoHistFiller // // Container class for the hodo hists //////////////////////////////////////////////////////////////////////////// //#include #include "honlinehodohistfiller.h" #include "hparamlist.h" #include "honlinemonhist.h" #include "honlinetrendhist.h" #include "honlinehistarray.h" #include "hododef.h" #include "hhodoraw.h" #include "hhodocal.h" #include "hhodohit.h" #include "hades.h" #include "hevent.h" #include "hcategory.h" #include "hiterator.h" #include "TList.h" #include "TArrayI.h" #include "TString.h" #define HODO_CELL_MAX 4 #define HODO_HIT_MAX 30 TArrayI HOnlineHodoHistFiller::colorsModule; // Hist Pointers // HOnlineHistArray* HOnlineHodoHistFiller::hhits_raw=0; // HOnlineMonHist* HOnlineHodoHistFiller::hmulttdcall=0; HOnlineHistArray* HOnlineHodoHistFiller::hProf[MAX_HODO_MODULES]={0,0,0,0,0,0,0,0,0,0}; HOnlineMonHist2* HOnlineHodoHistFiller::hRawTime[MAX_HODO_MODULES]={0,0,0,0,0,0,0,0,0,0}; HOnlineMonHist2* HOnlineHodoHistFiller::hRawWidth[MAX_HODO_MODULES]={0,0,0,0,0,0,0,0,0,0}; HOnlineMonHist2* HOnlineHodoHistFiller::hCrT[MAX_HODO_MODULES]={0,0,0,0,0,0,0,0,0,0}; HOnlineMonHist2* HOnlineHodoHistFiller::hFibMult[MAX_HODO_MODULES]={0,0,0,0,0,0,0,0,0,0}; HOnlineMonHist2* HOnlineHodoHistFiller::hSpot=0; HOnlineMonHist2* HOnlineHodoHistFiller::hNe5=0; HOnlineMonHist2* HOnlineHodoHistFiller::hTDCMult=0; HOnlineTrendArray* HOnlineHodoHistFiller::hEfficiency=0; // HOnlineMonHist2* HOnlineHodoHistFiller::hhodomult_raw=0; // HOnlineMonHist2* HOnlineHodoHistFiller::hhodomulttemp_raw=0; // HOnlineTrendArray* HOnlineHodoHistFiller::hhodomulttrend_raw=0; // Hist Addon Pointers // HOnlineMonHistAddon* HOnlineHodoHistFiller::hhits_rawA=0; // HOnlineMonHistAddon* HOnlineHodoHistFiller::hmulttdcallA=0; HOnlineMonHistAddon* HOnlineHodoHistFiller::hProfA[MAX_HODO_MODULES]={0,0,0,0,0,0,0,0,0,0}; HOnlineMonHistAddon* HOnlineHodoHistFiller::hRawTimeA[MAX_HODO_MODULES]={0,0,0,0,0,0,0,0,0,0}; HOnlineMonHistAddon* HOnlineHodoHistFiller::hRawWidthA[MAX_HODO_MODULES]={0,0,0,0,0,0,0,0,0,0}; HOnlineMonHistAddon* HOnlineHodoHistFiller::hCrTA[MAX_HODO_MODULES]={0,0,0,0,0,0,0,0,0,0}; HOnlineMonHistAddon* HOnlineHodoHistFiller::hFibMultA[MAX_HODO_MODULES]={0,0,0,0,0,0,0,0,0,0}; HOnlineMonHistAddon* HOnlineHodoHistFiller::hSpotA=0; HOnlineMonHistAddon* HOnlineHodoHistFiller::hNe5A=0; HOnlineMonHistAddon* HOnlineHodoHistFiller::hTDCMultA=0; HOnlineMonHistAddon* HOnlineHodoHistFiller::hEfficiencyA=0; // HOnlineMonHistAddon* HOnlineHodoHistFiller::hhodomult_rawA=0; // HOnlineMonHistAddon* HOnlineHodoHistFiller::hhodomulttemp_rawA=0; // HOnlineMonHistAddon* HOnlineHodoHistFiller::hhodomulttrend_rawA=0; ClassImp(HOnlineHodoHistFiller) HOnlineHodoHistFiller::HOnlineHodoHistFiller(const Char_t* name,const Char_t* title) : TNamed(name,title) { colorsModule.Set(8); // colorsCuts.Set(4); for(Int_t i=0; iReset(); cnt=0; for(Int_t i=0; igetP()->Clear(); hFib1Mult->getP()->Clear(); hFib2Mult->getP()->Clear(); */ while ((raw=(HHodoRaw*)rawiter->Next())!= 0 && cntgetModule(); mod[cnt]=m; f=raw->getFiber(); fib[cnt]=f; if( m>=0 && mgetNHits(); hTDCMult->getP()->Fill((Axis_t)(m*128+f),(Axis_t)(nr>10?10:nr)); }*/ cnt++;// overflow check in while above } for(Int_t i=0; i=0 && mod[i]getP()->Fill(fib[i],(mult[m]>20?20:mult[m])); for(Int_t j=i+1; jgetP()->Fill(fib[i],fib[j]);// Symetrisch hCrT[m]->getP()->Fill(fib[j],fib[i]); } } } } if(mod[i]==2){ for(Int_t j=0; jgetP()->Fill(fib[i],fib[j]);// new: veto x/y } } } if(mod[i]==4){ for(Int_t j=0; jgetP()->Fill(fib[i],fib[j]);// new: ne5 corr } } } } /* if(hTDCMult){// Multiplicity of TDC Channel... in Percent Float_t v=0; for(Int_t ii=1; ii<=256; ii++){ v=hTDCMult->getP()->GetBinContent(ii,2); if(v){ v=100/v; for(Int_t i=1; i<=11; i++){ hTDCMult->getP()->SetBinContent(ii,i,hTDCMult->getP()->GetBinContent(ii,i)*v); } } } }*/ for(Int_t m=0; mgetP()->GetBinContent(ii,2); if(v){ v=100/v; for(Int_t i=1; i<=21; i++){ hFibMult[m]->getP()->SetBinContent(ii,i,hFibMult[m]->getP()->GetBinContent(ii,i)*v); } } } } } } void HOnlineHodoHistFiller::fillRaw(HHodoRaw* raw) { Int_t nr=raw->getNHits(); Int_t m=raw->getModule(); Int_t f=raw->getFiber(); Float_t time, width; if(m>=0 && mgetP(0,0)->Fill(f); } if(hRawTime[m]){ for(Int_t i=0; igetTime(i+1); hRawTime[m]->getP()->Fill((Axis_t)(f),(Axis_t)time); } } if(hRawWidth[m]){ for(Int_t i=0; igetWidth(i+1); hRawWidth[m]->getP()->Fill((Axis_t)(f),(Axis_t)width); } } } } void HOnlineHodoHistFiller::fillCal(HHodoCal* cal) { Int_t nr=cal->getNHits(); Int_t m=cal->getModule(); Int_t f=cal->getStrip(); if(m>=0 && m0 && hProf[m]){ hProf[m]->getP(0,1)->Fill(f); } } } void HOnlineHodoHistFiller::fillHitCat(HIterator* hititer) { #if MAX_HODO_MODULES<10 #error Efficiency code is valid for 10 Hodo Mods only #endif Int_t mult[MAX_HODO_MODULES]; // Int_t mod[MAX_HODO_HITS], fib[MAX_HODO_HITS], cnt; HHodoHit* hit=0; hititer->Reset(); // cnt=0; for(Int_t i=0; iNext())!= 0 /*&& cntgetModule(); // mod[cnt]=m; f=hit->getStrip(); // fib[cnt]=f; if( m>=0 && mgetModule(); Int_t f=hit->getStrip(); if(m>=0 && mgetP(0,3)->Fill(f); } } } void HOnlineHodoHistFiller::fillTrend() { if(hEfficiency){ for(Int_t i=0; i=100){ hEfficiency->fill(0,i,100.0*effi_count[i]/effi_count_all[i]); effi_count[i]=0; effi_count_all[i]=0; } } } } void HOnlineHodoHistFiller::putHodoParams(HParamList* l,TList* histpool) { // Puts all params of HOnlineHodoHistFiller to the parameter list of // HParamList (which ist used by the io); Text_t mytemp[500]; l->add("colorsModule" ,colorsModule); // l->add("colorsCuts" ,colorsCuts ); for(Int_t m=0; mgetText(mytemp); l->add(name.Data(),mytemp); name="hHodoRawTime"; name+=m; hRawTimeA[m]->getText(mytemp); l->add(name.Data(),mytemp); name="hHodoRawWidth"; name+=m; hRawWidthA[m]->getText(mytemp); l->add(name.Data(),mytemp); name="hHodoCrT"; name+=m; hCrTA[m]->getText(mytemp); l->add(name.Data(),mytemp); name="hHodoFibMult"; name+=m; hFibMultA[m]->getText(mytemp); l->add(name.Data(),mytemp); } hSpotA->getText(mytemp); l->add("hHodoSpot" ,mytemp); hNe5A->getText(mytemp); l->add("hHodoNe5" ,mytemp); hTDCMultA->getText(mytemp); l->add("hHodoTDCMult" ,mytemp); hEfficiencyA->getText(mytemp); l->add("hEfficiency" ,mytemp); } Bool_t HOnlineHodoHistFiller::getHodoParams(HParamList* l,TList* histpool,TList* activeHists) { if(!(l->fill("colorsModule",&colorsModule))) return kFALSE; // if(!(l->fill("colorsCuts" ,&colorsCuts ))) return kFALSE; Text_t mytemp[500]; /* if(!(l->fill("hHodohits_raw",mytemp,500))) {return kFALSE;} else { histpool->Add(hhits_rawA=new HOnlineMonHistAddon(mytemp)); if(hhits_rawA->getActive()==1) { activeHists->Add(hhits_raw=new HOnlineHistArray(*hhits_rawA)); hhits_raw->getP(0,0)->SetLineColor(colorsSector[0]); hhits_raw->getP(0,1)->SetLineColor(colorsSector[1]); hhits_raw->getP(0,2)->SetLineColor(colorsSector[2]); hhits_raw->getP(0,3)->SetLineColor(colorsSector[3]); hhits_raw->getP(0,4)->SetLineColor(colorsSector[4]); hhits_raw->getP(0,5)->SetLineColor(colorsSector[5]); } }*/ for(Int_t m=0; mfill(name.Data(),mytemp,500))) {return kFALSE;} else { histpool->Add(hProfA[m]=new HOnlineMonHistAddon(mytemp)); if(hProfA[m]->getActive()==1) { activeHists->Add(hProf[m]=new HOnlineHistArray(*hProfA[m])); hProf[m]->getP(0,0)->SetFillColor(38); hProf[m]->getP(0,1)->SetFillColor(46); hProf[m]->getP(0,2)->SetFillColor(42); hProf[m]->getP(0,3)->SetFillColor(29); } } name="hHodoRawTime"; name+=m; if(!(l->fill(name.Data(),mytemp,500))) {return kFALSE;} else { histpool->Add(hRawTimeA[m]=new HOnlineMonHistAddon(mytemp)); if(hRawTimeA[m]->getActive()==1) { activeHists->Add(hRawTime[m]=new HOnlineMonHist2(*hRawTimeA[m])); } } name="hHodoRawWidth"; name+=m; if(!(l->fill(name.Data(),mytemp,500))) {return kFALSE;} else { histpool->Add(hRawWidthA[m]=new HOnlineMonHistAddon(mytemp)); if(hRawWidthA[m]->getActive()==1) { activeHists->Add(hRawWidth[m]=new HOnlineMonHist2(*hRawWidthA[m])); } } name="hHodoCrT"; name+=m; if(!(l->fill(name.Data(),mytemp,500))) {return kFALSE;} else { histpool->Add(hCrTA[m]=new HOnlineMonHistAddon(mytemp)); if(hCrTA[m]->getActive()==1) { activeHists->Add(hCrT[m]=new HOnlineMonHist2(*hCrTA[m])); } } name="hHodoFibMult"; name+=m; if(!(l->fill(name.Data(),mytemp,500))) {return kFALSE;} else { histpool->Add(hFibMultA[m]=new HOnlineMonHistAddon(mytemp)); if(hFibMultA[m]->getActive()==1) { activeHists->Add(hFibMult[m]=new HOnlineMonHist2(*hFibMultA[m])); } } } if(!(l->fill("hHodoSpot",mytemp,500))) {return kFALSE;} else { histpool->Add(hSpotA=new HOnlineMonHistAddon(mytemp)); if(hSpotA->getActive()==1) { activeHists->Add(hSpot=new HOnlineMonHist2(*hSpotA)); } } if(!(l->fill("hHodoNe5",mytemp,500))) {return kFALSE;} else { histpool->Add(hNe5A=new HOnlineMonHistAddon(mytemp)); if(hNe5A->getActive()==1) { activeHists->Add(hNe5=new HOnlineMonHist2(*hNe5A)); } } if(!(l->fill("hHodoTDCMult",mytemp,500))) {return kFALSE;} else { histpool->Add(hTDCMultA=new HOnlineMonHistAddon(mytemp)); if(hTDCMultA->getActive()==1) { activeHists->Add(hTDCMult=new HOnlineMonHist2(*hTDCMultA)); } } if(!(l->fill("hEfficiency",mytemp,500))) {return kFALSE;} else { histpool->Add(hEfficiencyA=new HOnlineMonHistAddon(mytemp)); if(hEfficiencyA->getActive()==1) { activeHists->Add(hEfficiency=new HOnlineTrendArray(*hEfficiencyA)); for(Int_t s=0; sgetP(0,s)->SetLineColor(colorsModule[s]); hEfficiency->getP(0,s)->SetMarkerColor(colorsModule[s]); } } } /* if(!(l->fill("hHodohodomulttrend_raw",mytemp,500))) {return kFALSE;} else { histpool->Add(hhodomulttrend_rawA=new HOnlineMonHistAddon(mytemp)); if(hhodomulttrend_rawA->getActive()==1) { activeHists->Add(hhodomulttrend_raw=new HOnlineTrendArray(*hhodomulttrend_rawA)); for(Int_t s=0;s<6;s++){ hhodomulttrend_raw->getP(0,s)->SetLineColor(colorsSector[s]); hhodomulttrend_raw->getP(0,s)->SetMarkerColor(colorsSector[s]); } } }*/ return kTRUE; }