//*-- AUTHOR : J. Markert //_HADES_CLASS_DESCRIPTION //////////////////////////////////////////////////////////////////////////// // HOnlineTofHistFiller // // Container class for the tof hists //////////////////////////////////////////////////////////////////////////// //#include #include "honlinetofhistfiller.h" #include "hparamlist.h" #include "honlinemonhist.h" #include "honlinetrendhist.h" #include "honlinehistarray.h" #include "tofdef.h" #include "htofraw.h" #include "htofcal.h" #include "htofhit.h" #include "hades.h" #include "hevent.h" #include "hcategory.h" #include "TList.h" #include "TArrayI.h" #include "TString.h" // Color definitions TArrayI HOnlineTofHistFiller::colorsSector; TArrayI HOnlineTofHistFiller::colorsModule; TArrayI HOnlineTofHistFiller::colorsCuts; // Hist Pointers HOnlineHistArray* HOnlineTofHistFiller::hhits_raw=0; HOnlineMonHist* HOnlineTofHistFiller::hmulttof_raw=0; HOnlineMonHist* HOnlineTofHistFiller::hmulttoftofino_raw=0; HOnlineMonHist* HOnlineTofHistFiller::htofpatternL_raw=0; HOnlineMonHist* HOnlineTofHistFiller::htofpatternR_raw=0; HOnlineMonHist2* HOnlineTofHistFiller::htoftdcL_raw=0; HOnlineMonHist2* HOnlineTofHistFiller::htoftdcR_raw=0; HOnlineMonHist2* HOnlineTofHistFiller::htofadcL_raw=0; HOnlineMonHist2* HOnlineTofHistFiller::htofadcR_raw=0; HOnlineMonHist2* HOnlineTofHistFiller::htoftdcSum_hit=0; HOnlineMonHist2* HOnlineTofHistFiller::htoftdcDiff_hit=0; HOnlineMonHist2* HOnlineTofHistFiller::htofadcSum_hit=0; HOnlineMonHist2* HOnlineTofHistFiller::htofadcPos_hit=0; HOnlineMonHist* HOnlineTofHistFiller::htofsum_hit=0; HOnlineMonHist* HOnlineTofHistFiller::htoftheta_hit=0; HOnlineMonHist* HOnlineTofHistFiller::htofphi_hit=0; HOnlineMonHist2* HOnlineTofHistFiller::htofyvsx_hit=0; HOnlineMonHist2* HOnlineTofHistFiller::htofmult_raw=0; HOnlineMonHist2* HOnlineTofHistFiller::htofmulttemp_raw=0; HOnlineTrendArray* HOnlineTofHistFiller::htofmulttrend_raw=0; // Hist Addon Pointers HOnlineMonHistAddon* HOnlineTofHistFiller::hhits_rawA=0; HOnlineMonHistAddon* HOnlineTofHistFiller::hmulttof_rawA=0; HOnlineMonHistAddon* HOnlineTofHistFiller::hmulttoftofino_rawA=0; HOnlineMonHistAddon* HOnlineTofHistFiller::htofpatternL_rawA=0; HOnlineMonHistAddon* HOnlineTofHistFiller::htofpatternR_rawA=0; HOnlineMonHistAddon* HOnlineTofHistFiller::htoftdcL_rawA=0; HOnlineMonHistAddon* HOnlineTofHistFiller::htoftdcR_rawA=0; HOnlineMonHistAddon* HOnlineTofHistFiller::htofadcL_rawA=0; HOnlineMonHistAddon* HOnlineTofHistFiller::htofadcR_rawA=0; HOnlineMonHistAddon* HOnlineTofHistFiller::htoftdcSum_hitA=0; HOnlineMonHistAddon* HOnlineTofHistFiller::htoftdcDiff_hitA=0; HOnlineMonHistAddon* HOnlineTofHistFiller::htofadcSum_hitA=0; HOnlineMonHistAddon* HOnlineTofHistFiller::htofadcPos_hitA=0; HOnlineMonHistAddon* HOnlineTofHistFiller::htofsum_hitA=0; HOnlineMonHistAddon* HOnlineTofHistFiller::htoftheta_hitA=0; HOnlineMonHistAddon* HOnlineTofHistFiller::htofphi_hitA=0; HOnlineMonHistAddon* HOnlineTofHistFiller::htofyvsx_hitA=0; HOnlineMonHistAddon* HOnlineTofHistFiller::htofmult_rawA=0; HOnlineMonHistAddon* HOnlineTofHistFiller::htofmulttemp_rawA=0; HOnlineMonHistAddon* HOnlineTofHistFiller::htofmulttrend_rawA=0; ClassImp(HOnlineTofHistFiller) HOnlineTofHistFiller::HOnlineTofHistFiller(const Char_t* name,const Char_t* title) : TNamed(name,title) { colorsSector.Set(6); colorsModule.Set(4); colorsCuts.Set(4); } HOnlineTofHistFiller::~HOnlineTofHistFiller() { } void HOnlineTofHistFiller::fillRaw(HTofRaw* raw) { Float_t rtime=raw->getRightTime(); Float_t ltime=raw->getLeftTime(); Float_t rcharge=raw->getRightCharge(); Float_t lcharge=raw->getLeftCharge(); //Short_t nHit=raw->getNHit(); Int_t s=raw->getSector(); Int_t m=raw->getModule(); Int_t c=raw->getCell(); Int_t itof2= (s*64+m*8+c+1); if(hhits_raw)hhits_raw->fill(0,s,m*8+c); if(htofpatternL_raw && ltime>10 && ltime<3900)htofpatternL_raw->getP()->Fill(itof2); if(htofpatternR_raw && rtime>10 && rtime<3900)htofpatternR_raw->getP()->Fill(itof2); if(htoftdcL_raw )htoftdcL_raw->getP()->Fill(itof2,ltime); if(htoftdcR_raw )htoftdcR_raw->getP()->Fill(itof2,rtime); if(htofadcL_raw )htofadcL_raw->getP()->Fill(itof2,lcharge); if(htofadcR_raw )htofadcR_raw->getP()->Fill(itof2,rcharge); if(rtime>0) { if(htofmult_raw) htofmult_raw ->getP()->Fill(m*8+c,s); if(htofmulttemp_raw)htofmulttemp_raw->getP()->Fill(m*8+c,s); } if(ltime>0) { if(htofmult_raw) htofmult_raw ->getP()->Fill(m*8+c,s); if(htofmulttemp_raw)htofmulttemp_raw->getP()->Fill(m*8+c,s); } } void HOnlineTofHistFiller::fillRawMult(Int_t tofmult,Int_t tofinomult) { if(hmulttof_raw)hmulttof_raw->getP()->Fill(tofmult); if(hmulttoftofino_raw)hmulttoftofino_raw->getP()->Fill(tofmult+tofinomult); } void HOnlineTofHistFiller::fillHit(HTofHit* hit) { Int_t s =hit->getSector(); Int_t m =hit->getModule(); Int_t c =hit->getCell(); Float_t xpos =hit->getXpos(); Float_t tof =hit->getTof(); Float_t Edep =hit->getEdep(); Float_t xposAdc =hit->getXposAdc(); Int_t Adcflag =hit->getAdcFlag(); Float_t dist =0; Float_t theta=0; Float_t phi =0; Float_t lab_x=0; Float_t lab_y=0; Float_t lab_z=0; hit->getDistance(dist); hit->getTheta(theta); hit->getPhi(phi); hit->getXYZLab(lab_x,lab_y,lab_z); Int_t itof2= (s*64+m*8+c+1); Float_t corrT=((dist-2100)/300); Float_t time = (tof - corrT); //if(startdet>3) time=time+1; //Int_t rod =m*8+c; //Int_t ypos; //if(rod <32) ypos= rod*30+15; //if(rod>=32) ypos=(rod-32)*20+970; //ypos=800.-ypos; if(htoftdcSum_hit)htoftdcSum_hit->getP()->Fill(itof2,time); if(htoftdcDiff_hit)htoftdcDiff_hit->getP()->Fill(itof2,xpos); if(Adcflag==2) { if(htofadcSum_hit)htofadcSum_hit->getP()->Fill(itof2,Edep); if(htofadcPos_hit)htofadcPos_hit->getP()->Fill(itof2,xposAdc); } if( htofsum_hit) htofsum_hit ->getP()->Fill(time); if( htoftheta_hit)htoftheta_hit->getP()->Fill(theta); if( htofphi_hit) htofphi_hit ->getP()->Fill(phi); if( htofyvsx_hit) htofyvsx_hit ->getP()->Fill(lab_x,lab_y); } void HOnlineTofHistFiller::fillTrend() { for(Int_t s=0;s<6;s++){ if(htofmulttemp_raw&&htofmulttrend_raw){ htofmulttrend_raw->fill(0,s,htofmulttemp_raw->getP()->Integral(1,64,s+1,s+1)); } } if(htofmulttemp_raw)htofmulttemp_raw->getP()->Reset(); } void HOnlineTofHistFiller::putTofParams(HParamList* l,TList* histpool) { // Puts all params of HOnlineTofHistFiller to the parameter list of // HParamList (which ist used by the io); Text_t mytemp[500]; l->add("colorsSector" ,colorsSector); l->add("colorsModule" ,colorsModule); l->add("colorsCuts" ,colorsCuts ); htofmult_rawA->getText(mytemp); l->add("htofmult_raw" ,mytemp); htofmulttemp_rawA->getText(mytemp); l->add("htofmulttemp_raw" ,mytemp); htofmulttrend_rawA->getText(mytemp); l->add("htofmulttrend_raw" ,mytemp); hhits_rawA->getText(mytemp); l->add("hhits_raw" ,mytemp); hmulttof_rawA->getText(mytemp); l->add("hmulttof_raw" ,mytemp); htofpatternL_rawA->getText(mytemp); l->add("htofpatternL_raw" ,mytemp); htofpatternR_rawA->getText(mytemp); l->add("htofpatternR_raw" ,mytemp); htoftdcL_rawA->getText(mytemp); l->add("htoftdcL_raw" ,mytemp); htoftdcR_rawA->getText(mytemp); l->add("htoftdcR_raw" ,mytemp); htofadcL_rawA->getText(mytemp); l->add("htofadcL_raw" ,mytemp); htofadcR_rawA->getText(mytemp); l->add("htofadcR_raw" ,mytemp); htoftdcSum_hitA->getText(mytemp); l->add("htoftdcSum_hit" ,mytemp); htoftdcDiff_hitA->getText(mytemp); l->add("htoftdcDiff_hit" ,mytemp); htofadcSum_hitA->getText(mytemp); l->add("htofadcSum_hit" ,mytemp); htofadcPos_hitA->getText(mytemp); l->add("htofadcPos_hit" ,mytemp); htofsum_hitA->getText(mytemp); l->add("htofsum_hit" ,mytemp); htoftheta_hitA->getText(mytemp); l->add("htoftheta_hit" ,mytemp); htofphi_hitA->getText(mytemp); l->add("htofphi_hit" ,mytemp); htofyvsx_hitA->getText(mytemp); l->add("htofyvsx_hit" ,mytemp); hmulttoftofino_rawA->getText(mytemp); l->add("htofmulttoftofino_raw" ,mytemp); } Bool_t HOnlineTofHistFiller::getTofParams(HParamList* l,TList* histpool,TList* activeHists) { if(!(l->fill("colorsSector",&colorsSector))) return kFALSE; if(!(l->fill("colorsModule",&colorsModule))) return kFALSE; if(!(l->fill("colorsCuts" ,&colorsCuts ))) return kFALSE; Text_t mytemp[500]; if(!(l->fill("hhits_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]); } } if(!(l->fill("htofmult_raw",mytemp,500))) {return kFALSE;} else { histpool->Add(htofmult_rawA=new HOnlineMonHistAddon(mytemp)); if(htofmult_rawA->getActive()==1) { activeHists->Add(htofmult_raw=new HOnlineMonHist2(*htofmult_rawA)); } } if(!(l->fill("htofmulttemp_raw",mytemp,500))) {return kFALSE;} else { histpool->Add(htofmulttemp_rawA=new HOnlineMonHistAddon(mytemp)); if(htofmulttemp_rawA->getActive()==1) { activeHists->Add(htofmulttemp_raw=new HOnlineMonHist2(*htofmulttemp_rawA)); } } if(!(l->fill("htofmulttrend_raw",mytemp,500))) {return kFALSE;} else { histpool->Add(htofmulttrend_rawA=new HOnlineMonHistAddon(mytemp)); if(htofmulttrend_rawA->getActive()==1) { activeHists->Add(htofmulttrend_raw=new HOnlineTrendArray(*htofmulttrend_rawA)); for(Int_t s=0;s<6;s++){ htofmulttrend_raw->getP(0,s)->SetLineColor(colorsSector[s]); htofmulttrend_raw->getP(0,s)->SetMarkerColor(colorsSector[s]); } } } if(!(l->fill("hmulttof_raw",mytemp,500))) {return kFALSE;} else { histpool->Add(hmulttof_rawA=new HOnlineMonHistAddon(mytemp)); if(hmulttof_rawA->getActive()==1) { activeHists->Add(hmulttof_raw=new HOnlineMonHist(*hmulttof_rawA)); } } if(!(l->fill("htofpatternL_raw",mytemp,500))) {return kFALSE;} else { histpool->Add(htofpatternL_rawA=new HOnlineMonHistAddon(mytemp)); if(htofpatternL_rawA->getActive()==1) { activeHists->Add(htofpatternL_raw=new HOnlineMonHist(*htofpatternL_rawA)); } } if(!(l->fill("htofpatternR_raw",mytemp,500))) {return kFALSE;} else { histpool->Add(htofpatternR_rawA=new HOnlineMonHistAddon(mytemp)); if(htofpatternR_rawA->getActive()==1) { activeHists->Add(htofpatternR_raw=new HOnlineMonHist(*htofpatternR_rawA)); } } if(!(l->fill("htoftdcL_raw",mytemp,500))) {return kFALSE;} else { histpool->Add(htoftdcL_rawA=new HOnlineMonHistAddon(mytemp)); if(htoftdcL_rawA->getActive()==1) { activeHists->Add(htoftdcL_raw=new HOnlineMonHist2(*htoftdcL_rawA)); } } if(!(l->fill("htoftdcR_raw",mytemp,500))) {return kFALSE;} else { histpool->Add(htoftdcR_rawA=new HOnlineMonHistAddon(mytemp)); if(htoftdcR_rawA->getActive()==1) { activeHists->Add(htoftdcR_raw=new HOnlineMonHist2(*htoftdcR_rawA)); } } if(!(l->fill("htofadcL_raw",mytemp,500))) {return kFALSE;} else { histpool->Add(htofadcL_rawA=new HOnlineMonHistAddon(mytemp)); if(htofadcL_rawA->getActive()==1) { activeHists->Add(htofadcL_raw=new HOnlineMonHist2(*htofadcL_rawA)); } } if(!(l->fill("htofadcR_raw",mytemp,500))) {return kFALSE;} else { histpool->Add(htofadcR_rawA=new HOnlineMonHistAddon(mytemp)); if(htofadcR_rawA->getActive()==1) { activeHists->Add(htofadcR_raw=new HOnlineMonHist2(*htofadcR_rawA)); } } if(!(l->fill("htoftdcSum_hit",mytemp,500))) {return kFALSE;} else { histpool->Add(htoftdcSum_hitA=new HOnlineMonHistAddon(mytemp)); if(htoftdcSum_hitA->getActive()==1) { activeHists->Add(htoftdcSum_hit=new HOnlineMonHist2(*htoftdcSum_hitA)); } } if(!(l->fill("htoftdcDiff_hit",mytemp,500))) {return kFALSE;} else { histpool->Add(htoftdcDiff_hitA=new HOnlineMonHistAddon(mytemp)); if(htoftdcDiff_hitA->getActive()==1) { activeHists->Add(htoftdcDiff_hit=new HOnlineMonHist2(*htoftdcDiff_hitA)); } } if(!(l->fill("htofadcSum_hit",mytemp,500))) {return kFALSE;} else { histpool->Add(htofadcSum_hitA=new HOnlineMonHistAddon(mytemp)); if(htofadcSum_hitA->getActive()==1) { activeHists->Add(htofadcSum_hit=new HOnlineMonHist2(*htofadcSum_hitA)); } } if(!(l->fill("htofadcPos_hit",mytemp,500))) {return kFALSE;} else { histpool->Add(htofadcPos_hitA=new HOnlineMonHistAddon(mytemp)); if(htofadcPos_hitA->getActive()==1) { activeHists->Add(htofadcPos_hit=new HOnlineMonHist2(*htofadcPos_hitA)); } } if(!(l->fill("htofsum_hit",mytemp,500))) {return kFALSE;} else { histpool->Add(htofsum_hitA=new HOnlineMonHistAddon(mytemp)); if(htofsum_hitA->getActive()==1) { activeHists->Add(htofsum_hit=new HOnlineMonHist(*htofsum_hitA)); } } if(!(l->fill("htoftheta_hit",mytemp,500))) {return kFALSE;} else { histpool->Add(htoftheta_hitA=new HOnlineMonHistAddon(mytemp)); if(htoftheta_hitA->getActive()==1) { activeHists->Add(htoftheta_hit=new HOnlineMonHist(*htoftheta_hitA)); } } if(!(l->fill("htofphi_hit",mytemp,500))) {return kFALSE;} else { histpool->Add(htofphi_hitA=new HOnlineMonHistAddon(mytemp)); if(htofphi_hitA->getActive()==1) { activeHists->Add(htofphi_hit=new HOnlineMonHist(*htofphi_hitA)); } } if(!(l->fill("htofyvsx_hit",mytemp,500))) {return kFALSE;} else { histpool->Add(htofyvsx_hitA=new HOnlineMonHistAddon(mytemp)); if(htofyvsx_hitA->getActive()==1) { activeHists->Add(htofyvsx_hit=new HOnlineMonHist2(*htofyvsx_hitA)); } } if(!(l->fill("htofmulttoftofino_raw",mytemp,500))) {return kFALSE;} else { histpool->Add(hmulttoftofino_rawA=new HOnlineMonHistAddon(mytemp)); if(hmulttoftofino_rawA->getActive()==1) { activeHists->Add(hmulttoftofino_raw=new HOnlineMonHist(*hmulttoftofino_rawA)); } } return kTRUE; }