//*-- AUTHOR : J. Markert //_HADES_CLASS_DESCRIPTION //////////////////////////////////////////////////////////////////////////// // HTriggerHistFiller // // Container class for the trigger hists //////////////////////////////////////////////////////////////////////////// #include "htriggerhistfiller.h" #include "htriggerhistfillerutil.h" #include "hparamlist.h" #include "hmonhist.h" #include "htrendhist.h" #include "hhistarray.h" #include "triggerinfodef.h" #include "hmatchurich.h" #include "hmatchutof.h" #include "hmatchushower.h" #include "hmuleptons.h" #include "htofhit.h" #include "hshowerhitIPU.h" #include "hiterator.h" #include "htriggerparshowermap.h" #include "hades.h" #include "hevent.h" #include "hcategory.h" #include #include // Color definitions TArrayI HTriggerHistFiller::colorsModule; TArrayI HTriggerHistFiller::colorsCuts; TArrayI HTriggerHistFiller::colorsIPUtrend; // Hist Pointers HMonHist* HTriggerHistFiller::htof=0; HHistArray* HTriggerHistFiller::htriggermultdistrib=0; HHistArray* HTriggerHistFiller::htriggerrichringmultdistrib=0; HHistArray* HTriggerHistFiller::htriggertofhitmultdistrib=0; HHistArray* HTriggerHistFiller::htriggershowerhitmultdistrib=0; HHistArray* HTriggerHistFiller::htriggermatchuhitmultdistrib=0; HHistArray2* HTriggerHistFiller::htofCorrPhi=0; HHistArray2* HTriggerHistFiller::htofCorrTheta=0; HHistArray2* HTriggerHistFiller::hshowerCorrPhi=0; HHistArray2* HTriggerHistFiller::hshowerCorrTheta=0; HMonHist* HTriggerHistFiller::htofnumbers=0; HMonHist* HTriggerHistFiller::hrichnumbers=0; HTrendArray* HTriggerHistFiller::hiputrendRich=0; HTrendArray* HTriggerHistFiller::hiputrendTof=0; HTrendArray* HTriggerHistFiller::hiputrendShower=0; HTrendArray* HTriggerHistFiller::hiputrendMatchU=0; HTrendArray* HTriggerHistFiller::htriggerTrendTime=0; HTrendArray* HTriggerHistFiller::hiputrendRichTime=0; HTrendArray* HTriggerHistFiller::hiputrendTofTime=0; HTrendArray* HTriggerHistFiller::hiputrendShowerTime=0; HTrendArray* HTriggerHistFiller::hiputrendMatchUTime=0; HMonHist2* HTriggerHistFiller::hipubutterfly=0; HMonHist* HTriggerHistFiller::hmulepmom=0; // Hist Addon Pointers HMonHistAddon* HTriggerHistFiller::htofA=0; HMonHistAddon* HTriggerHistFiller::htriggermultdistribA=0; HMonHistAddon* HTriggerHistFiller::htriggerrichringmultdistribA=0; HMonHistAddon* HTriggerHistFiller::htriggertofhitmultdistribA=0; HMonHistAddon* HTriggerHistFiller::htriggershowerhitmultdistribA=0; HMonHistAddon* HTriggerHistFiller::htriggermatchuhitmultdistribA=0; HMonHistAddon* HTriggerHistFiller::htofCorrPhiA=0; HMonHistAddon* HTriggerHistFiller::htofCorrThetaA=0; HMonHistAddon* HTriggerHistFiller::hshowerCorrPhiA=0; HMonHistAddon* HTriggerHistFiller::hshowerCorrThetaA=0; HMonHistAddon* HTriggerHistFiller::htofnumbersA=0; HMonHistAddon* HTriggerHistFiller::hrichnumbersA=0; HMonHistAddon* HTriggerHistFiller::hiputrendRichA=0; HMonHistAddon* HTriggerHistFiller::hiputrendTofA=0; HMonHistAddon* HTriggerHistFiller::hiputrendShowerA=0; HMonHistAddon* HTriggerHistFiller::hiputrendMatchUA=0; HMonHistAddon* HTriggerHistFiller::htriggerTrendTimeA=0; HMonHistAddon* HTriggerHistFiller::hiputrendRichTimeA=0; HMonHistAddon* HTriggerHistFiller::hiputrendTofTimeA=0; HMonHistAddon* HTriggerHistFiller::hiputrendShowerTimeA=0; HMonHistAddon* HTriggerHistFiller::hiputrendMatchUTimeA=0; HMonHistAddon* HTriggerHistFiller::hipubutterflyA=0; HMonHistAddon* HTriggerHistFiller::hmulepmomA=0; ClassImp(HTriggerHistFiller) HTriggerHistFiller::HTriggerHistFiller(const char* name,const char* title) : TNamed(name,title) { colorsModule.Set(2); colorsCuts.Set(4); colorsIPUtrend.Set(7); resetCounter(); resetTimeCounter(); } HTriggerHistFiller::~HTriggerHistFiller() { } void HTriggerHistFiller::fillRich(HIterator* iterrich) { HMatchURich* rich=0; Int_t s=0; Int_t count[7]; //count number of rings per sector (0-5) and global (6) for(Int_t i=0;i<7;i++) { count[i]=0; } while ((rich=(HMatchURich *)iterrich->Next())!=0) { s=rich->getSegmentId(); iputrendhit[0][s]++; iputrendhit[0][6]++; count[6]++; if((s>=0) && (s<=5)) { count[s]++; } else { cout << "---trigger: ---fillRich: ---Sector out of bounds... should be 0-5 but is: " << s << endl; } } for(Int_t i=0;i<7;i++) { iputrendevent[0][i]++; } for(Int_t i=0;i<3;i++) { richCounter[0][i]++; } if(count[6]>=2) { for(Int_t i=0;i<3;i++) { richCounter [1][i]++; richCounter [2][i]++; } } else { if(count[6]>=1) { for(Int_t i=0;i<3;i++) { richCounter [1][i]++; } } } if(richCounter[0][0]==100) { richCounter[0][0]=0; for(Int_t i=0;i<2;i++) { richResult[i][0]=(Float_t)richCounter[i+1][0]/100.0; richCounter[i+1][0]=0; } } if(richCounter[0][1]==1000) { richCounter[0][1]=0; for(Int_t i=0;i<2;i++) { richResult[i][1]=(Float_t)richCounter[i+1][1]/1000.0; richCounter[i+1][1]=0; } } if(richCounter[0][2]==10000) { richCounter[0][2]=0; for(Int_t i=0;i<2;i++) { richResult[i][2]=(Float_t)richCounter[i+1][2]/10000.0; richCounter[i+1][2]=0; } } if(htriggerrichringmultdistrib) { for(Int_t i=0;i<6;i++) { htriggerrichringmultdistrib->fill(0,i,count[i]); } } if(htriggermultdistrib) { htriggermultdistrib->fill(0,0,count[6]); } } void HTriggerHistFiller::fillTof(HIterator* itertof) { HMatchUTof * tof=0; Int_t s=0; Int_t count[7]; //count number of hits per sector (0-5) and global (6) for(Int_t i=0;i<7;i++) { count[i]=0; } Int_t pidTof=0; Float_t time; while ((tof=(HMatchUTof *)itertof->Next())!=0) { time=tof->getTime(); if(htof) { htof->getP()->Fill(time); } s = tof->getSector(); pidTof = tof->getPID(); iputrendhit[1][s]++; iputrendhit[1][6]++; if(pidTof==1) { tofLeptons[s]++; tofLeptons[6]++; } count[6]++; if((s>=0) && (s<=5)) { count[s]++; } else { cout << "---trigger: ---fillTof: ---Sector out of bounds... should be 0-5 but is: " << s << endl; } } for(Int_t i=0;i<7;i++) { iputrendevent[1][i]++; } if(htriggertofhitmultdistrib) { for(Int_t i=0;i<6;i++) { htriggertofhitmultdistrib->fill(0,i,count[i]); } } if(htriggermultdistrib) { htriggermultdistrib->fill(0,1,count[6]); } } void HTriggerHistFiller::fillTofCorrelation(HIterator *itertof, HIterator* itertofhit) { HTofHit *tofHit; HMatchUTof *ipuHit; Float_t phiTof, thetaTof; Float_t phiMatch, thetaMatch; TList *ipucoord[6]; TList *anacoord[6]; Int_t anaHitsSec[6]; Int_t ipuHitsSec[6]; Int_t sectorMatch; Int_t sectorTof; Float_t timeTof; Float_t timeMatch; Float_t diffPhi, diffTheta, diffSquared; Int_t listPos, listPos2; Int_t actAna, actIpu; Int_t nonCorrelatedIpu, nonCorrelatedAna; TList *diffList; TList *corrList; for(Int_t i=0;i<6;i++) { ipucoord[i] = new TList(); anacoord[i] = new TList(); anaHitsSec[i] = 0; ipuHitsSec[i] = 0; } diffList = new TList(); corrList = new TList(); listPos = 0; listPos2 = 0; actAna = 0; actIpu = 0; while((tofHit = (HTofHit *)itertofhit->Next()) != 0) { tofHit->getPhi(phiTof); tofHit->getTheta(thetaTof); sectorTof = tofHit->getSector(); timeTof = tofHit->getTof(); if(sectorTof < 5) phiTof -= (sectorTof + 1) * 60; if(((phiTof > 0.) && (phiTof < 60.)) && ((thetaTof > 43.) && (thetaTof < 90.))) { TofTypePrivat *th = new TofTypePrivat(phiTof, thetaTof, timeTof,tofHit->getModule(), tofHit->getCell(),tofHit->getModule()*8+tofHit->getCell()); anacoord[sectorTof]->Add(th); anaHitsSec[sectorTof]++; } } while((ipuHit = (HMatchUTof *)itertof->Next()) != 0) { phiMatch = ipuHit->getPhi(); thetaMatch = ipuHit->getTheta(); timeMatch = ipuHit->getTime(); sectorMatch = ipuHit->getSector(); if(sectorMatch < 5) { phiMatch -= (sectorMatch + 1) * 60; } TofTypePrivat *mh = new TofTypePrivat(phiMatch, thetaMatch, timeMatch, 0, 0, sectorMatch); ipucoord[sectorMatch]->Add(mh); ipuHitsSec[sectorMatch]++; } for(Int_t sec = 0; sec < 6; sec++) { listPos = 0; for(actAna = 0; actAna < anaHitsSec[sec]; actAna++) { for(actIpu = 0; actIpu < ipuHitsSec[sec]; actIpu++) { diffPhi = ((TofTypePrivat*)ipucoord[sec]->At(actIpu))->getPhi() - ((TofTypePrivat*)anacoord[sec]->At(actAna))->getPhi(); diffTheta = ((TofTypePrivat*)ipucoord[sec]->At(actIpu))->getTheta() - ((TofTypePrivat*)anacoord[sec]->At(actAna))->getTheta(); diffSquared = diffPhi * diffPhi + diffTheta * diffTheta; if(diffList->GetSize() == 0) listPos = 0; else { while((diffSquared > ((ThetaCorrPrivat*)diffList->At(listPos))->getThetaDiff2()) && (listPos < diffList->GetSize())) { listPos++; if(listPos == diffList->GetSize()) break; } } ThetaCorrPrivat *tc = new ThetaCorrPrivat(diffSquared, actAna, actIpu); diffList->AddAt(tc, listPos); } } nonCorrelatedIpu = ipuHitsSec[sec]; nonCorrelatedAna = anaHitsSec[sec]; listPos = 0; listPos2 = 0; while((nonCorrelatedIpu > 0) && (nonCorrelatedAna > 0) && (listPos < diffList->GetSize())) { actAna = ((ThetaCorrPrivat*)diffList->At(listPos))->getAnaHit(); actIpu = ((ThetaCorrPrivat*)diffList->At(listPos))->getIpuHit(); if((((TofTypePrivat*)ipucoord[sec]->At(actIpu))->getPhi() > 0) && (((TofTypePrivat*)anacoord[sec]->At(actAna))->getPhi() > 0)) { CorrPrivat *cp = new CorrPrivat(sec,((TofTypePrivat*)anacoord[sec]->At(actAna))->getPhi(), ((TofTypePrivat*)anacoord[sec]->At(actAna))->getTheta(), ((TofTypePrivat*)ipucoord[sec]->At(actIpu))->getPhi(), ((TofTypePrivat*)ipucoord[sec]->At(actIpu))->getTheta(), ((TofTypePrivat*)anacoord[sec]->At(actAna))->getTime(), ((TofTypePrivat*)ipucoord[sec]->At(actIpu))->getTime(), ((TofTypePrivat*)anacoord[sec]->At(actAna))->getSector()); corrList->AddAt(cp,listPos2); listPos2++; nonCorrelatedIpu--; nonCorrelatedAna--; ((TofTypePrivat*)anacoord[sec]->At(actAna))->clear(); ((TofTypePrivat*)ipucoord[sec]->At(actIpu))->clear(); } listPos++; } for(actAna = 0; actAna < anaHitsSec[sec]; actAna++) { if((((TofTypePrivat*)anacoord[sec]->At(actAna))->getPhi() != 0) && (((TofTypePrivat*)anacoord[sec]->At(actAna))->getTheta() != 0)) { CorrPrivat *cp = new CorrPrivat(sec, ((TofTypePrivat*)anacoord[sec]->At(actAna))->getPhi(), ((TofTypePrivat*)anacoord[sec]->At(actAna))->getTheta(), 0, 40, ((TofTypePrivat*)anacoord[sec]->At(actAna))->getTime(), 0, 0); corrList->AddAt(cp,listPos2); listPos2++; } } for(actIpu = 0; actIpu < ipuHitsSec[sec]; actIpu++) { if((((TofTypePrivat*)ipucoord[sec]->At(actIpu))->getPhi() != 0) && (((TofTypePrivat*)ipucoord[sec]->At(actIpu))->getTheta() != 0)) { CorrPrivat *cp = new CorrPrivat(sec, ((TofTypePrivat*)ipucoord[sec]->At(actIpu))->getPhi(), ((TofTypePrivat*)ipucoord[sec]->At(actIpu))->getTheta(), 0, 40, ((TofTypePrivat*)ipucoord[sec]->At(actIpu))->getTime(), 0, 0); corrList->AddAt(cp,listPos2); listPos2++; } } for(listPos=0;listPosfill(0,sec,((CorrPrivat*)corrList->At(listPos))->getPhiAna(), ((CorrPrivat*)corrList->At(listPos))->getPhiIPU()); htofCorrTheta->fill(0,sec,((CorrPrivat*)corrList->At(listPos))->getThetaAna(), ((CorrPrivat*)corrList->At(listPos))->getThetaIPU()); } diffList->Delete(); corrList->Delete(); } for(Int_t i=0;i<6;i++) { ipucoord[i]->Delete(); delete ipucoord[i]; anacoord[i]->Delete(); delete anacoord[i]; } delete diffList; delete corrList; } void HTriggerHistFiller::fillShower(HIterator* itershower) { HMatchUShower* shower=0; Int_t s=0; Int_t count[7]; //count number of hits per sector (0-5) and global (6) for(Int_t i=0;i<7;i++) { count[i]=0; } while ((shower=(HMatchUShower*)itershower->Next())!=0) { s=shower->getSector(); iputrendhit[2][s]++; iputrendhit[2][6]++; count[6]++; if((s>=0) && (s<=5)) { count[s]++; } else { cout << "---trigger: ---fillShower: ---Sector out of bounds... should be 0-5 but is: " << s << endl; } } for(Int_t i=0;i<7;i++) { iputrendevent[2][i]++; } if(htriggershowerhitmultdistrib) { for(Int_t i=0;i<6;i++) { htriggershowerhitmultdistrib->fill(0,i,count[i]); } } if(htriggermultdistrib) { htriggermultdistrib->fill(0,2,count[6]); } } void HTriggerHistFiller::fillShowerCorrelation(HIterator* itershower, HIterator*itershowerhit,HTriggerParShowerMap *showerMap) { TList *MUShoHit[6]; TList *ShowerHit[6]; TList *diffList; HShowerHitIPU *hitshower; HMatchUShower *hitmatch; Int_t MUShoHitsSec[6]; // Number of hits from MU per sector Int_t ShowerHitsSec[6]; // Number of hits from Shower per sector Int_t sec; // counter: sector Float_t pphi, ptheta; //used only to fill the number of parameters requested Int_t listLen, listPos, listPos2; Int_t MUSho,Shower; Int_t nonCorrelatedMUSho, nonCorrelatedShower; Float_t diffSquared; for (sec=0;sec<6;sec++) { MUShoHitsSec[sec] = 0; ShowerHitsSec[sec] = 0; MUShoHit[sec] = new TList(); ShowerHit[sec] = new TList(); } diffList = new TList(); while((hitshower = (HShowerHitIPU *)itershowerhit->Next()) != NULL) { sec = hitshower->getSector(); //hitshower->getSphereCoord(&pr, &pphi, &ptheta); pphi = showerMap->getShowerPhi(hitshower->getCol(),hitshower->getRow()); ptheta = showerMap->getShowerTheta(hitshower->getCol(),hitshower->getRow()); /* if(sec < 5) pphi -= 60*(sec+1);*/ CorrShowerCord *sc = new CorrShowerCord(pphi, ptheta,0); ShowerHit[sec]->Add(sc); ShowerHitsSec[sec]++; } while((hitmatch = (HMatchUShower *)itershower->Next()) != NULL) { sec = hitmatch->getSector(); pphi = hitmatch->getPhi(); ptheta = hitmatch->getTheta(); if(sec < 5) pphi -= 60*(sec+1); CorrShowerCord *sc = new CorrShowerCord(pphi, ptheta,0); MUShoHit[sec]->Add(sc); MUShoHitsSec[sec]++; } for (sec=0; sec<6; sec++) { listLen = 0; // current number of array elements in difflist listPos = 0; for( MUSho=0; MUShoAt(MUSho)))->getPhi() - ((CorrShowerCord*)(ShowerHit[sec]->At(Shower)))->getPhi(); ptheta = ((CorrShowerCord*)(MUShoHit[sec]->At(MUSho)))->getTheta() - ((CorrShowerCord*)(ShowerHit[sec]->At(Shower)))->getTheta(); diffSquared = pphi * pphi + ptheta * ptheta; if(diffList->GetSize() == 0) listPos = 0; else { while((diffSquared > ((CorrShowerDiff*)diffList->At(listPos))->getDiff()) && (listPos < diffList->GetSize())) { listPos++; if(listPos == diffList->GetSize()) break; } } CorrShowerDiff *tc = new CorrShowerDiff(diffSquared, MUSho, Shower); diffList->AddAt(tc, listPos); } } nonCorrelatedMUSho = MUShoHitsSec[sec]; nonCorrelatedShower = ShowerHitsSec[sec]; listPos = 0; listPos2 = 0; while ( ( nonCorrelatedMUSho > 0 ) && ( nonCorrelatedShower > 0 ) && ( listPosGetSize()) ) { MUSho = ((CorrShowerDiff *)diffList->At(listPos))->getMU(); Shower = ((CorrShowerDiff *)diffList->At(listPos))->getShower(); if ( (((CorrShowerCord*)(MUShoHit[sec]->At(MUSho)))->getMF()==0) && (((CorrShowerCord*)(ShowerHit[sec]->At(Shower)))->getMF()==0) ) { hshowerCorrPhi->fill(0,sec,((CorrShowerCord*)(ShowerHit[sec]->At(Shower)))->getPhi(), ((CorrShowerCord*)(MUShoHit[sec]->At(MUSho)))->getPhi()); hshowerCorrTheta->fill(0,sec,((CorrShowerCord*)(ShowerHit[sec]->At(Shower)))->getTheta(), ((CorrShowerCord*)(MUShoHit[sec]->At(MUSho)))->getTheta()); ((CorrShowerCord*)(MUShoHit[sec]->At(MUSho)))->setMF(1); ((CorrShowerCord*)(ShowerHit[sec]->At(Shower)))->setMF(1); nonCorrelatedMUSho--; nonCorrelatedShower--; } listPos++; } diffList->Delete(); } for(sec=0;sec<6;sec++) { MUShoHit[sec]->Delete(); delete MUShoHit[sec]; ShowerHit[sec]->Delete(); delete ShowerHit[sec]; } delete diffList; } void HTriggerHistFiller::fillMatchU(HIterator* itermatchu ) { HMULeptons* matchu=0; Int_t s=0; Float_t phi; Int_t count[7]; //count number of hits per sector (0-5) and global (6) for(Int_t i=0;i<7;i++) { count[i]=0; } while ((matchu=(HMULeptons*)itermatchu->Next())!=0) { phi = matchu->getPhiRich(); if (matchu->getSector() < 5) phi -= 60*(matchu->getSector()+1); if(hipubutterfly){ hipubutterfly->getP()->Fill(phi,(matchu->getPhiRich()-matchu->getPhiMeta())); } if(hmulepmom){ hmulepmom->getP()->Fill(matchu->getMom()); } s=matchu->getSector(); iputrendhit[3][s]++; iputrendhit[3][6]++; count[6]++; if((s>=0) && (s<=5)) { count[s]++; } else { cout << "---trigger: ---fillMatchU: ---Sector out of bounds... should be 0-5 but is: " << s << endl; } } for(Int_t i=0;i<7;i++) { iputrendevent[3][i]++; } if(htriggermatchuhitmultdistrib) { for(Int_t i=0;i<6;i++) { htriggermatchuhitmultdistrib->fill(0,i,count[i]); } } if(htriggermultdistrib) { htriggermultdistrib->fill(0,3,count[6]); } } void HTriggerHistFiller::fillTrend() { for(Int_t i=0;i<4;i++) { for(Int_t j=0;j<7;j++) { if(iputrendevent[i][j]!=0) { if(hiputrendRich &&i==0) { hiputrendRich->fill(0,j,((Float_t)iputrendhit[i][j])/((Float_t)iputrendevent[i][j])); } if(hiputrendTof &&i==1) { // hiputrendTof->fill(0,j,((Float_t)iputrendhit[i][j])/((Float_t)iputrendevent[i][j])); hiputrendTof->fill(0,j,((Float_t)tofLeptons[j])/((Float_t)iputrendevent[i][j])); } if(hiputrendShower&&i==2) { hiputrendShower->fill(0,j,((Float_t)iputrendhit[i][j])/((Float_t)iputrendevent[i][j])); } if(hiputrendMatchU&&i==3) { hiputrendMatchU->fill(0,j,((Float_t)iputrendhit[i][j])/((Float_t)iputrendevent[i][j])); } } } } if(htofnumbers!=0) { for(Int_t i=0;i<7;i++) { if(iputrendhit[1][i] != 0) { htofnumbers->getP()->SetBinContent( i+1, ((Float_t)tofLeptons[i])/((Float_t)iputrendhit[1][i]) ); } } } if(hrichnumbers!=0) { for(Int_t i=0;i<3;i++) { hrichnumbers->getP()->SetBinContent( i+1 , richResult[0][i] ); hrichnumbers->getP()->SetBinContent( i+1+3, richResult[1][i] ); } } resetCounter(); } void HTriggerHistFiller::fillTime(UInt_t currentTime) { //cout << "--------------------------------------------------------------------------" << endl; //cout << "-----" << timeOld << " \t: " << currentTime << endl; if(timeOld >= currentTime) { //cout << "hitcounter++ = " << timeHitCounter << endl; timeEventCounter++; } else { timeOffset = (currentTime - timeOld); //cout << "timeOffset = " << timeOffset << endl; timeOld = currentTime; if(htriggerTrendTime) { //cout<<"fill "<fill(0, 0, timeEventCounter); for(Int_t i=0;ifill(0, 0, 0); } // fill zeros for the seconds without events } timeEventCounter = 1; } //cout << "-----" << timeOld << " \t: " << currentTime << endl; //cout << "--------------------------------------------------------------------------" << endl; } void HTriggerHistFiller::fillRichTime(HIterator* iterrich, UInt_t currentTime) { HMatchURich* rich=0; Int_t s=0; if(ipuTimeOld[0] > currentTime) { cout << "--- trigger: --fillRichTime ipuTimeOld[0] :" << ipuTimeOld[0] << " > currentTime :" << currentTime << endl; cout << "reset ipuTimeOld..." << endl; ipuTimeOld[0]=0; } if(ipuTimeOld[0] == currentTime) { while ((rich=(HMatchURich *)iterrich->Next())!=0) { s=rich->getSegmentId(); ipuTimeHitCounter[0][s]++; ipuTimeHitCounter[0][6]++; } for(Int_t i=0;i<7;i++) { ipuTimeEventCounter[0][i]++; } } if(ipuTimeOld[0] < currentTime) { fillTrendTime(0, (currentTime - ipuTimeOld[0]) ); ipuTimeOld[0] = currentTime; while ((rich=(HMatchURich *)iterrich->Next())!=0) { s=rich->getSegmentId(); ipuTimeHitCounter[0][s]++; ipuTimeHitCounter[0][6]++; } for(Int_t i=0;i<7;i++){ipuTimeEventCounter[0][i]++;} } } void HTriggerHistFiller::fillTofTime(HIterator* itertof, UInt_t currentTime) { HMatchUTof* tof=0; Int_t s=0; if(ipuTimeOld[1] > currentTime) { cout << "--- trigger: --fillTofTime ipuTimeOld[1] :" << ipuTimeOld[1] << " > currentTime :" << currentTime << endl; cout << "reset ipuTimeOld..." << endl; ipuTimeOld[1]=0; } if(ipuTimeOld[1] == currentTime) { while ((tof=(HMatchUTof *)itertof->Next())!=0) { s=tof->getSector(); ipuTimeHitCounter[1][s]++; ipuTimeHitCounter[1][6]++; } for(Int_t i=0;i<7;i++){ipuTimeEventCounter[1][i]++;} } if(ipuTimeOld[1] < currentTime) { fillTrendTime(1, (currentTime - ipuTimeOld[1]) ); ipuTimeOld[1] = currentTime; while ((tof=(HMatchUTof *)itertof->Next())!=0) { s=tof->getSector(); ipuTimeHitCounter[1][s]++; ipuTimeHitCounter[1][6]++; } for(Int_t i=0;i<7;i++) { ipuTimeEventCounter[1][i]++; } } } void HTriggerHistFiller::fillShowerTime(HIterator* itershower, UInt_t currentTime) { HMatchUShower* shower=0; Int_t s=0; if(ipuTimeOld[2] > currentTime) { cout << "--- trigger: --fillShowerTime ipuTimeOld[2] :" << ipuTimeOld[2] << " > currentTime :" << currentTime << endl; cout << "reset ipuTimeOld..." << endl; ipuTimeOld[2]=0; } if(ipuTimeOld[2] == currentTime) { while ((shower=(HMatchUShower *)itershower->Next())!=0) { s=shower->getSector(); ipuTimeHitCounter[2][s]++; ipuTimeHitCounter[2][6]++; } for(Int_t i=0;i<7;i++) { ipuTimeEventCounter[2][i]++; } } if(ipuTimeOld[2] < currentTime) { fillTrendTime(2, (currentTime - ipuTimeOld[2]) ); ipuTimeOld[2] = currentTime; while ((shower=(HMatchUShower *)itershower->Next())!=0) { s=shower->getSector(); ipuTimeHitCounter[2][s]++; ipuTimeHitCounter[2][6]++; } for(Int_t i=0;i<7;i++) { ipuTimeEventCounter[2][i]++; } } } void HTriggerHistFiller::fillMatchUTime(HIterator* itermatchu, UInt_t currentTime) { HMULeptons* matchu=0; Int_t s=0; if(ipuTimeOld[3] > currentTime) { cout << "--- trigger: --fillMatchUTime ipuTimeOld[3] :" << ipuTimeOld[3] << " > currentTime :" << currentTime << endl; cout << "reset ipuTimeOld..." << endl; ipuTimeOld[3]=0; } if(ipuTimeOld[3] == currentTime) { while ((matchu=(HMULeptons *)itermatchu->Next())!=0) { s=matchu->getSector(); ipuTimeHitCounter[3][s]++; ipuTimeHitCounter[3][6]++; } for(Int_t i=0;i<7;i++) { ipuTimeEventCounter[3][i]++; } } if(ipuTimeOld[3] < currentTime) { fillTrendTime(3, (currentTime - ipuTimeOld[3]) ); ipuTimeOld[3] = currentTime; while ((matchu=(HMULeptons *)itermatchu->Next())!=0) { s=matchu->getSector(); ipuTimeHitCounter[3][s]++; ipuTimeHitCounter[3][6]++; } for(Int_t i=0;i<7;i++) { ipuTimeEventCounter[3][i]++; } } } void HTriggerHistFiller::fillTrendTime(UInt_t ipu, UInt_t offset) { for(Int_t j=0;j<7;j++) { if( (ipuTimeEventCounter[ipu][j]!=0) && (offset>=1) ) { if(hiputrendRichTime &&ipu==0) { hiputrendRichTime ->fill( 0, j, ((Float_t)ipuTimeHitCounter[ipu][j]) / ((Float_t)ipuTimeEventCounter[ipu][j]) ); for(UInt_t i=0;ifill( 0, j, 0 ); } } if(hiputrendTof &&ipu==1) { hiputrendTofTime ->fill( 0, j, ((Float_t)ipuTimeHitCounter[ipu][j]) / ((Float_t)ipuTimeEventCounter[ipu][j]) ); for(UInt_t i=0;ifill( 0, j, 0 ); } } if(hiputrendShower&&ipu==2) { hiputrendShowerTime->fill( 0, j, ((Float_t)ipuTimeHitCounter[ipu][j]) / ((Float_t)ipuTimeEventCounter[ipu][j]) ); for(UInt_t i=0;ifill( 0, j, 0 ); } } if(hiputrendMatchU&&ipu==3) { hiputrendMatchUTime->fill( 0, j, ((Float_t)ipuTimeHitCounter[ipu][j]) / ((Float_t)ipuTimeEventCounter[ipu][j]) ); for(UInt_t i=0;ifill( 0, j, 0 ); } } } } resetSingleIpuTimeCounter(ipu); } void HTriggerHistFiller::putTriggerParams(HParamList* l,TList* histpool) { // Puts all params of HTriggerHistFiller to the parameter list of // HParamList (which ist used by the io); Text_t mytemp[500]; l->add("colorsModule" ,colorsModule ); l->add("colorsCuts" ,colorsCuts ); l->add("colorsIPUtrend" ,colorsIPUtrend ); htofA->getText(mytemp); l->add("htof" ,mytemp,500); hiputrendRichA->getText(mytemp); l->add("hiputrendRich" ,mytemp,500); hiputrendTofA->getText(mytemp); l->add("hiputrendTof" ,mytemp,500); hiputrendShowerA->getText(mytemp); l->add("hiputrendShower" ,mytemp,500); hiputrendMatchUA->getText(mytemp); l->add("hiputrendMatchU" ,mytemp,500); htriggerTrendTimeA->getText(mytemp); l->add("htriggerTrendTime" ,mytemp,500); hiputrendRichTimeA->getText(mytemp); l->add("hiputrendRichTime" ,mytemp,500); hiputrendTofTimeA->getText(mytemp); l->add("hiputrendTofTime" ,mytemp,500); hiputrendShowerTimeA->getText(mytemp); l->add("hiputrendShowerTime" ,mytemp,500); hiputrendMatchUTimeA->getText(mytemp); l->add("hiputrendMatchUTime" ,mytemp,500); htofnumbersA->getText(mytemp); l->add("htofnumbers" ,mytemp,500); htofCorrPhiA->getText(mytemp); l->add("htofCorrPhi" ,mytemp,500); htofCorrThetaA->getText(mytemp); l->add("htofCorrTheta" ,mytemp,500); hshowerCorrPhiA->getText(mytemp); l->add("hshowerCorrPhi" ,mytemp,500); hshowerCorrThetaA->getText(mytemp); l->add("hshowerCorrTheta" ,mytemp,500); hrichnumbersA->getText(mytemp); l->add("hrichnumbers" ,mytemp,500); htriggermultdistribA->getText(mytemp); l->add("htriggermultdistrib" ,mytemp,500); htriggerrichringmultdistribA->getText(mytemp); l->add("htriggerrichringmultdistrib" ,mytemp,500); htriggertofhitmultdistribA->getText(mytemp); l->add("htriggertofhitmultdistrib" ,mytemp,500); htriggershowerhitmultdistribA->getText(mytemp); l->add("htriggershowerhitmultdistrib" ,mytemp,500); htriggermatchuhitmultdistribA->getText(mytemp); l->add("htriggermatchuhitmultdistrib" ,mytemp,500); hipubutterflyA->getText(mytemp); l->add("hipubutterfly" ,mytemp,500); hmulepmomA->getText(mytemp); l->add("hmulepmon" ,mytemp,500); } Bool_t HTriggerHistFiller::getTriggerParams(HParamList* l,TList* histpool,TList* activeHists) { if(!(l->fill("colorsModule" ,&colorsModule))) return kFALSE; if(!(l->fill("colorsCuts" ,&colorsCuts ))) return kFALSE; if(!(l->fill("colorsIPUtrend",&colorsIPUtrend ))) return kFALSE; Text_t mytemp[500]; if(!(l->fill("htof",mytemp,500))) {return kFALSE;} else { histpool->Add(htofA=new HMonHistAddon(mytemp)); if(htofA->getActive()==1) { activeHists->Add(htof=new HMonHist(*htofA)); } } if(!(l->fill("hiputrendRich",mytemp,500))) {return kFALSE;} else { histpool->Add(hiputrendRichA=new HMonHistAddon(mytemp)); if(hiputrendRichA->getActive()==1) { activeHists->Add(hiputrendRich=new HTrendArray(*hiputrendRichA)); for(Int_t row=0;row<1;row++) { for(Int_t sec=0;sec<7;sec++) { hiputrendRich->getP(row,sec)->SetLineColor(colorsIPUtrend[sec]); } } } } if(!(l->fill("hiputrendTof",mytemp,500))) {return kFALSE;} else { histpool->Add(hiputrendTofA=new HMonHistAddon(mytemp)); if(hiputrendTofA->getActive()==1) { activeHists->Add(hiputrendTof=new HTrendArray(*hiputrendTofA)); for(Int_t row=0;row<1;row++) { for(Int_t sec=0;sec<7;sec++) { hiputrendTof->getP(row,sec)->SetLineColor(colorsIPUtrend[sec]); } } } } if(!(l->fill("hiputrendShower",mytemp,500))) {return kFALSE;} else { histpool->Add(hiputrendShowerA=new HMonHistAddon(mytemp)); if(hiputrendShowerA->getActive()==1) { activeHists->Add(hiputrendShower=new HTrendArray(*hiputrendShowerA)); for(Int_t row=0;row<1;row++) { for(Int_t sec=0;sec<7;sec++) { hiputrendShower->getP(row,sec)->SetLineColor(colorsIPUtrend[sec]); } } } } if(!(l->fill("hiputrendMatchU",mytemp,500))) {return kFALSE;} else { histpool->Add(hiputrendMatchUA=new HMonHistAddon(mytemp)); if(hiputrendMatchUA->getActive()==1) { activeHists->Add(hiputrendMatchU=new HTrendArray(*hiputrendMatchUA)); for(Int_t row=0;row<1;row++) { for(Int_t sec=0;sec<7;sec++) { hiputrendMatchU->getP(row,sec)->SetLineColor(colorsIPUtrend[sec]); } } } } if(!(l->fill("htriggerTrendTime",mytemp,500))) {return kFALSE;} else { histpool->Add(htriggerTrendTimeA=new HMonHistAddon(mytemp)); if(htriggerTrendTimeA->getActive()==1) { activeHists->Add(htriggerTrendTime=new HTrendArray(*htriggerTrendTimeA)); for(Int_t sec=0;sec<1;sec++){ htriggerTrendTime->getP(0,sec)->SetLineColor(17); } } } if(!(l->fill("hiputrendRichTime",mytemp,500))) {return kFALSE;} else { histpool->Add(hiputrendRichTimeA=new HMonHistAddon(mytemp)); if(hiputrendRichTimeA->getActive()==1) { activeHists->Add(hiputrendRichTime=new HTrendArray(*hiputrendRichTimeA)); for(Int_t row=0;row<1;row++) { for(Int_t sec=0;sec<7;sec++) { hiputrendRichTime->getP(row,sec)->SetLineColor(colorsIPUtrend[sec]); } } } } if(!(l->fill("hiputrendTofTime",mytemp,500))) {return kFALSE;} else { histpool->Add(hiputrendTofTimeA=new HMonHistAddon(mytemp)); if(hiputrendTofTimeA->getActive()==1) { activeHists->Add(hiputrendTofTime=new HTrendArray(*hiputrendTofTimeA)); for(Int_t row=0;row<1;row++) { for(Int_t sec=0;sec<7;sec++) { hiputrendTofTime->getP(row,sec)->SetLineColor(colorsIPUtrend[sec]); } } } } if(!(l->fill("hiputrendShowerTime",mytemp,500))) {return kFALSE;} else { histpool->Add(hiputrendShowerTimeA=new HMonHistAddon(mytemp)); if(hiputrendShowerTimeA->getActive()==1) { activeHists->Add(hiputrendShowerTime=new HTrendArray(*hiputrendShowerTimeA)); for(Int_t row=0;row<1;row++) { for(Int_t sec=0;sec<7;sec++) { hiputrendShowerTime->getP(row,sec)->SetLineColor(colorsIPUtrend[sec]); } } } } if(!(l->fill("hshowerCorrPhi",mytemp,500))) {return kFALSE;} else { histpool->Add(hshowerCorrPhiA=new HMonHistAddon(mytemp)); if(hshowerCorrPhiA->getActive()==1) { activeHists->Add(hshowerCorrPhi=new HHistArray2(*hshowerCorrPhiA)); } } if(!(l->fill("hshowerCorrTheta",mytemp,500))) {return kFALSE;} else { histpool->Add(hshowerCorrThetaA=new HMonHistAddon(mytemp)); if(hshowerCorrThetaA->getActive()==1) { activeHists->Add(hshowerCorrTheta=new HHistArray2(*hshowerCorrThetaA)); } } if(!(l->fill("hiputrendMatchUTime",mytemp,500))) {return kFALSE;} else { histpool->Add(hiputrendMatchUTimeA=new HMonHistAddon(mytemp)); if(hiputrendMatchUTimeA->getActive()==1) { activeHists->Add(hiputrendMatchUTime=new HTrendArray(*hiputrendMatchUTimeA)); for(Int_t row=0;row<1;row++) { for(Int_t sec=0;sec<7;sec++) { hiputrendMatchUTime->getP(row,sec)->SetLineColor(colorsIPUtrend[sec]); } } } } if(!(l->fill("htofnumbers",mytemp,500))) {return kFALSE;} else { histpool->Add(htofnumbersA=new HMonHistAddon(mytemp)); if(htofnumbersA->getActive()==1) { activeHists->Add(htofnumbers=new HMonHist(*htofnumbersA)); } } if(!(l->fill("htofCorrPhi",mytemp,500))) {return kFALSE;} else { histpool->Add(htofCorrPhiA=new HMonHistAddon(mytemp)); if(htofCorrPhiA->getActive()==1) { activeHists->Add(htofCorrPhi=new HHistArray2(*htofCorrPhiA)); } } if(!(l->fill("htofCorrTheta",mytemp,500))) {return kFALSE;} else { histpool->Add(htofCorrThetaA=new HMonHistAddon(mytemp)); if(htofCorrThetaA->getActive()==1) { activeHists->Add(htofCorrTheta=new HHistArray2(*htofCorrThetaA)); } } if(!(l->fill("hrichnumbers",mytemp,500))) {return kFALSE;} else { histpool->Add(hrichnumbersA=new HMonHistAddon(mytemp)); if(hrichnumbersA->getActive()==1) { activeHists->Add(hrichnumbers=new HMonHist(*hrichnumbersA)); } } if(!(l->fill("htriggermultdistrib",mytemp,500))) {return kFALSE;} else { histpool->Add(htriggermultdistribA=new HMonHistAddon(mytemp)); if(htriggermultdistribA->getActive()==1) { activeHists->Add(htriggermultdistrib=new HHistArray(*htriggermultdistribA)); for(Int_t sec=0;sec<4;sec++) { htriggermultdistrib->getP(0,sec)->SetLineColor(17); } } } if(!(l->fill("htriggerrichringmultdistrib",mytemp,500))) {return kFALSE;} else { histpool->Add(htriggerrichringmultdistribA=new HMonHistAddon(mytemp)); if(htriggerrichringmultdistribA->getActive()==1) { activeHists->Add(htriggerrichringmultdistrib=new HHistArray(*htriggerrichringmultdistribA)); for(Int_t sec=0;sec<6;sec++) { htriggerrichringmultdistrib->getP(0,sec)->SetLineColor(17); } } } if(!(l->fill("htriggertofhitmultdistrib",mytemp,500))) {return kFALSE;} else { histpool->Add(htriggertofhitmultdistribA=new HMonHistAddon(mytemp)); if(htriggertofhitmultdistribA->getActive()==1) { activeHists->Add(htriggertofhitmultdistrib=new HHistArray(*htriggertofhitmultdistribA)); for(Int_t sec=0;sec<6;sec++) { htriggertofhitmultdistrib->getP(0,sec)->SetLineColor(17); } } } if(!(l->fill("htriggershowerhitmultdistrib",mytemp,500))) {return kFALSE;} else { histpool->Add(htriggershowerhitmultdistribA=new HMonHistAddon(mytemp)); if(htriggershowerhitmultdistribA->getActive()==1) { activeHists->Add(htriggershowerhitmultdistrib=new HHistArray(*htriggershowerhitmultdistribA)); for(Int_t sec=0;sec<6;sec++) { htriggershowerhitmultdistrib->getP(0,sec)->SetLineColor(17); } } } if(!(l->fill("htriggermatchuhitmultdistrib",mytemp,500))) {return kFALSE;} else { histpool->Add(htriggermatchuhitmultdistribA=new HMonHistAddon(mytemp)); if(htriggermatchuhitmultdistribA->getActive()==1) { activeHists->Add(htriggermatchuhitmultdistrib=new HHistArray(*htriggermatchuhitmultdistribA)); for(Int_t sec=0;sec<6;sec++) { htriggermatchuhitmultdistrib->getP(0,sec)->SetLineColor(17); } } } if(!(l->fill("hipubutterfly",mytemp,500))) {return kFALSE;} else { histpool->Add(hipubutterflyA=new HMonHistAddon(mytemp)); if(hipubutterflyA->getActive()==1) { activeHists->Add(hipubutterfly=new HMonHist2(*hipubutterflyA)); } } if(!(l->fill("hmulepmom",mytemp,500))) {return kFALSE;} else { histpool->Add(hmulepmomA=new HMonHistAddon(mytemp)); if(hmulepmomA->getActive()==1) { activeHists->Add(hmulepmom=new HMonHist(*hmulepmomA)); } } return kTRUE; }