//*-- AUTHOR : J. Markert //_HADES_CLASS_DESCRIPTION //////////////////////////////////////////////////////////////////////////// // HOnlineRichHistFiller // // Container class for the rich hists //////////////////////////////////////////////////////////////////////////// //#include #include "honlinerichhistfiller.h" #include "hparamlist.h" #include "honlinemonhist.h" #include "honlinerichfancy.h" #include "honlinerichpattern.h" #include "hrichmappingpar.h" #include "honlinetrendhist.h" #include "honlinehistarray.h" #include "richdef.h" #include "hrichcal.h" #include "hrichhit.h" #include "hades.h" #include "hevent.h" #include "hcategory.h" #include "hruntimedb.h" #include "TList.h" #include "TArrayI.h" #include "TString.h" #include "TH1.h" // Color definitions TArrayI HOnlineRichHistFiller::colorsSector; TArrayI HOnlineRichHistFiller::colorsCuts; // Hist Pointers HOnlineHistArray* HOnlineRichHistFiller::hRichPulseDist=0; HOnlineTrendArray* HOnlineRichHistFiller::hRichMultiplicity=0; HOnlineTrendArray* HOnlineRichHistFiller::hRichChargedParticles=0; HOnlineHistArray2* HOnlineRichHistFiller::hRichPulseheight=0; HOnlineMonHist2* HOnlineRichHistFiller::hRichmult_raw=0; HOnlineMonHist2* HOnlineRichHistFiller::hRichmulttemp_raw=0; HOnlineTrendArray* HOnlineRichHistFiller::hRichmulttrend_raw=0; // Hist Addon Pointers HOnlineRichPattern* HOnlineRichHistFiller::hRichMyPattern=0; HOnlineRichFancy* HOnlineRichHistFiller::hRichFancyDisplay=0; HOnlineMonHistAddon* HOnlineRichHistFiller::hRichPulseDistAddon=0; HOnlineMonHistAddon* HOnlineRichHistFiller::hRichPulseheightAddon=0; HOnlineMonHistAddon* HOnlineRichHistFiller::hRichChargedParticlesAddon=0; HOnlineMonHistAddon* HOnlineRichHistFiller::hRichMultiplicityAddon=0; HOnlineMonHistAddon* HOnlineRichHistFiller::hRichmult_rawA=0; HOnlineMonHistAddon* HOnlineRichHistFiller::hRichmulttemp_rawA=0; HOnlineMonHistAddon* HOnlineRichHistFiller::hRichmulttrend_rawA=0; ClassImp(HOnlineRichHistFiller) HOnlineRichHistFiller::HOnlineRichHistFiller(const Char_t* name,const Char_t* title) : TNamed(name,title) { colorsSector.Set(6); colorsCuts.Set(4); } HOnlineRichHistFiller::~HOnlineRichHistFiller() { } void HOnlineRichHistFiller::fillCalCategory(TIterator* RichCalIterator) { // static Int_t maxSec=6; // unused static Int_t maxCol=92; static Int_t maxRow=90; Float_t ChargeArray[6][92][90]; //Float_t ChargeArray2[6][92][90]; Int_t sec; Float_t charge; Int_t row; Int_t col; Int_t evtnr; HRichCal* listElement; if(hRichMyPattern){ hRichMyPattern->reset(); } if(hRichPulseheight){ for (Int_t sectorCount=0; sectorCount<6;sectorCount++){ for (Int_t colCount=0; colCountNext())!=0 ) { sec=RichCalData->getSector(); charge=RichCalData->getCharge(); row=RichCalData->getRow(); col=RichCalData->getCol(); evtnr = RichCalData->getEventNr(); ChargeArray[sec][col][row]+=charge; if(hRichMyPattern){ listElement = new HRichCal(0.0); listElement->setCharge(charge); listElement->setSector(sec); listElement->setRow(row); listElement->setCol(col); listElement->setEventNr(evtnr); (hRichMyPattern->getNewList())->Add(listElement); } } for (Int_t sectorCount=0; sectorCount<6;sectorCount++){ for (Int_t colCount=0; colCountgetBinContent(0, sectorCount,colCount,rowCount); Stat_t NewBinContent = 1.0e-4 * ChargeArray[sectorCount][colCount][rowCount] + 9999.0e-4 * OldBinContent; hRichPulseheight->setBinContent(0, sectorCount, colCount, rowCount, NewBinContent); } } } } } void HOnlineRichHistFiller::fillHit(HRichHit* hit) { } void HOnlineRichHistFiller::fillCal(HRichCal* cal) { } void HOnlineRichHistFiller::fillTrend() { for(Int_t s=0;s<6;s++){ if(hRichmulttemp_raw&&hRichmulttrend_raw){ hRichmulttrend_raw->fill(0,s,hRichmulttemp_raw->getP()->Integral(1,16,s+1,s+1)); } } if(hRichmulttemp_raw)hRichmulttemp_raw->getP()->Reset(); } void HOnlineRichHistFiller::putRichParams(HParamList* l,TList* histpool) { // Puts all params of HOnlineRichHistFiller to the parameter list of // HParamList (which ist used by the io); Text_t mytemp[500]; l->add("colorsSector" ,colorsSector); l->add("colorsCuts" ,colorsCuts ); hRichPulseDistAddon->getText(mytemp); l->add("hRichPulseDist" ,mytemp); hRichMultiplicityAddon->getText(mytemp); l->add("hRichMultiplicity" , mytemp); hRichPulseheightAddon->getText(mytemp); l->add("hRichPulseheight" ,mytemp); hRichChargedParticlesAddon->getText(mytemp); l->add("hRichChargedParticles" ,mytemp); sprintf(mytemp,"%s","s"); l->add("hRichFancy" ,mytemp); sprintf(mytemp,"%s","s"); l->add("hRichPattern" ,mytemp); hRichmult_rawA->getText(mytemp); l->add("hRichmult_raw" ,mytemp); hRichmulttemp_rawA->getText(mytemp); l->add("hRichmulttemp_raw" ,mytemp); hRichmulttrend_rawA->getText(mytemp); l->add("hRichmulttrend_raw" ,mytemp); } Bool_t HOnlineRichHistFiller::getRichParams(HParamList* l,TList* histpool,TList* activeHists) { if(!(l->fill("colorsSector",&colorsSector))) return kFALSE; if(!(l->fill("colorsCuts" ,&colorsCuts ))) return kFALSE; Text_t mytemp[500]; if(!(l->fill("hRichPattern",mytemp,500))) {cout << "No fancy display configured" << endl;} else{ hRichFancyDisplay = new HOnlineRichFancy("RichOnlineDisplay","RichOnlineDisplay"); hRichMyPattern=new HOnlineRichPattern("RichPattern","RichPattern"); } if(!(l->fill("hRichPulseDist",mytemp,500))) {return kFALSE;} else { histpool->Add(hRichPulseDistAddon=new HOnlineMonHistAddon(mytemp)); if(hRichPulseDistAddon->getActive()==1) { activeHists->Add(hRichPulseDist=new HOnlineHistArray(*hRichPulseDistAddon)); hRichPulseDist->getP(0,0)->SetLineColor(colorsSector[0]); hRichPulseDist->getP(0,1)->SetLineColor(colorsSector[1]); hRichPulseDist->getP(0,2)->SetLineColor(colorsSector[2]); hRichPulseDist->getP(0,3)->SetLineColor(colorsSector[3]); hRichPulseDist->getP(0,4)->SetLineColor(colorsSector[4]); hRichPulseDist->getP(0,5)->SetLineColor(colorsSector[5]); } } if(!(l->fill("hRichPulseheight",mytemp,500))) {return kFALSE;} else { histpool->Add(hRichPulseheightAddon = new HOnlineMonHistAddon(mytemp)); if(hRichPulseheightAddon->getActive()==1) { activeHists->Add(hRichPulseheight=new HOnlineHistArray2(*hRichPulseheightAddon)); } } if(!(l->fill("hRichMultiplicity",mytemp,500))) {return kFALSE;} else { histpool->Add(hRichMultiplicityAddon = new HOnlineMonHistAddon(mytemp)); if(hRichMultiplicityAddon->getActive()==1) { activeHists->Add(hRichMultiplicity=new HOnlineTrendArray(*hRichMultiplicityAddon)); hRichMultiplicity->getP(0,0)->SetLineColor(colorsSector[0]); hRichMultiplicity->getP(0,1)->SetLineColor(colorsSector[1]); hRichMultiplicity->getP(0,2)->SetLineColor(colorsSector[2]); hRichMultiplicity->getP(0,3)->SetLineColor(colorsSector[3]); hRichMultiplicity->getP(0,4)->SetLineColor(colorsSector[4]); hRichMultiplicity->getP(0,5)->SetLineColor(colorsSector[5]); } } if(!(l->fill("hRichChargedParticles",mytemp,500))) {return kFALSE;} else { histpool->Add(hRichChargedParticlesAddon = new HOnlineMonHistAddon(mytemp)); if(hRichChargedParticlesAddon->getActive()==1) { activeHists->Add(hRichChargedParticles=new HOnlineTrendArray(*hRichChargedParticlesAddon)); hRichChargedParticles->getP(0,0)->SetLineColor(colorsSector[0]); hRichChargedParticles->getP(0,1)->SetLineColor(colorsSector[1]); hRichChargedParticles->getP(0,2)->SetLineColor(colorsSector[2]); hRichChargedParticles->getP(0,3)->SetLineColor(colorsSector[3]); hRichChargedParticles->getP(0,4)->SetLineColor(colorsSector[4]); hRichChargedParticles->getP(0,5)->SetLineColor(colorsSector[5]); } } if(!(l->fill("hRichmult_raw",mytemp,500))) {return kFALSE;} else { histpool->Add(hRichmult_rawA=new HOnlineMonHistAddon(mytemp)); if(hRichmult_rawA->getActive()==1) { activeHists->Add(hRichmult_raw=new HOnlineMonHist2(*hRichmult_rawA)); } } if(!(l->fill("hRichmulttemp_raw",mytemp,500))) {return kFALSE;} else { histpool->Add(hRichmulttemp_rawA=new HOnlineMonHistAddon(mytemp)); if(hRichmulttemp_rawA->getActive()==1) { activeHists->Add(hRichmulttemp_raw=new HOnlineMonHist2(*hRichmulttemp_rawA)); } } if(!(l->fill("hRichmulttrend_raw",mytemp,500))) {return kFALSE;} else { histpool->Add(hRichmulttrend_rawA=new HOnlineMonHistAddon(mytemp)); if(hRichmulttrend_rawA->getActive()==1) { activeHists->Add(hRichmulttrend_raw=new HOnlineTrendArray(*hRichmulttrend_rawA)); for(Int_t s=0;s<6;s++){ hRichmulttrend_raw->getP(0,s)->SetLineColor(colorsSector[s]); hRichmulttrend_raw->getP(0,s)->SetMarkerColor(colorsSector[s]); } } } return kTRUE; }