//_____________________________________________________________________________ // example of photon analysis module by Ray Culbertson // one can do in the interactive session //_____________________________________________________________________________ #include #include "TF1.h" #include "TCanvas.h" #include "Stntuple/loop/TStnAna.hh" #include "Stntuple/obj/TStnTrackBlock.hh" #include "Stntuple/obj/TStnJetBlock.hh" #include "Stntuple/obj/TStnMetBlock.hh" #include "Stntuple/obj/TCcrDataBlock.hh" #include "Stntuple/alg/TStntuple.hh" #include "TPhotonMonitor.hh" #include "TPhotonUtil.hh" using std::cout; using std::endl; ClassImp(TPhotonMonitor) //_____________________________________________________________________________ TPhotonMonitor::TPhotonMonitor(const char* name, const char* title): TStnModule(name,title) { mode=0; } //_____________________________________________________________________________ TPhotonMonitor::~TPhotonMonitor() { } //_____________________________________________________________________________ void TPhotonMonitor::BookHistograms() { fHist.fNpho = new TH1F("Pho_npho","N Pho",11,-0.5,10.5); fHist.fDet = new TH1F("Pho_det","Det",2,-0.5,1.5); fHist.fEt = new TH1F("Pho_et","Et",50,0,100.0); fHist.fPhi = new TH1F("Pho_phi","Phi",72,0.,2*M_PI); fHist.fDteta = new TH1F("Pho_Dteta","Dteta",50,-4.0,4.0); fHist.fCo4 = new TH1F("Pho_co4","Co4",50,0.0,50.0); fHist.fCo4PJW = new TH1F("Pho_co4PJW","Co4 PJW",50,0.0,50.0); fHist.fHadem = new TH1F("Pho_hadem","Hadem",50,0.,1.0); fHist.fHademT= new TH1F("Pho_hademT","HademT",50,0.,1.0); fHist.fPhoZv = new TH1F("Pho_pho_zv","PhoZv",50,-100.,100.); fHist.fSeedPhi = new TH1F("Pho_seed_phi","SeedPhi",48,-0.5,47.5); fHist.fSeedEta = new TH1F("Pho_seed_eta","SeedEta",52,-0.5,51.5); fHist.fTowEt = new TH1F("Pho_tow_et","TowEt",50,0,100.0); fHist.fTowPhi = new TH1F("Pho_tow_phi","TowPhi",50,0,6.29); fHist.fTowEta = new TH1F("Pho_tow_eta","TowEta",50,-4.0,4.0); fHist.fTowIso = new TH1F("Pho_tow_iso","TowIso",50,0.0,10.0); fHist.fNTowerC = new TH1F("Pho_n_tow_c","NTowC",3,0.5,3.5); fHist.fNTowerP = new TH1F("Pho_n_tow_p","NTowP",4,0.5,4.5); fHist.fTowPatC = new TH1F("Pho_tow_pat_c","TowPatC",50,-0.5,7.5); fHist.fTowPatP = new TH1F("Pho_tow_pat_p","TowPatP",512,-0.5,511.5); fHist.fEtC = new TH1F("Pho_etC","Et Cen",50,0,100.0); fHist.fLshr = new TH1F("Pho_lshr","Lshr",50,-3.5,3.0); fHist.fN3d = new TH1F("Pho_n3d","N3d",10,-0.5,9.5); fHist.fPt = new TH1F("Pho_pt","Pt",30,0.,50.); fHist.fSumpt4 = new TH1F("Pho_sumpt4","Sumpt4",30,0.,50.); fHist.fChi = new TH1F("Pho_chi","Chi",50,0.,30.); fHist.fCese = new TH1F("Pho_Cese","Ces E",50,0.,150.); fHist.fCeseRat = new TH1F("Pho_ceseRat","Cese/CEM",50,0.,3.0); fHist.fCeseRatStr = new TH1F("Pho_ceseRatStr","Cese/CEM Strip",50,0.,3.0); fHist.fCesx = new TH1F("Pho_cesx","Cesx",50,-28.0,28.0); fHist.fCesz = new TH1F("Pho_cesz","Cesz",50,-280.0,280.0); fHist.fCeseW2 = new TH1F("Pho_Cesew2","Ces E W2",50,0.,15.); fHist.fCeseS2 = new TH1F("Pho_Ceses2","Ces E S2",50,0.,15.); fHist.fCeseSW = new TH1F("Pho_Cesesw","Ces E S/W",50,0.,2.); fHist.fCpr5ps = new TH1F("Pho_cpr5ps","Cpr5ps",50,-25.,25.); fHist.fCpr5ph = new TH1F("Pho_cpr5ph","Cpr5ph",50,0.,30000.); fHist.fCescprx = new TH1F("Pho_cescprx","Ces CPR x",50,-28.,28.); fHist.fCescprq = new TH1F("Pho_cescprq","Ces CPR q",50,0.,30000.); fHist.fCprWht = new TH1F("Pho_pcprwht","Cpr Wht",50,-10.,10.); fHist.fCesWht = new TH1F("Pho_pceswht","Ces Wht",50,-10.,10.); fHist.fCesCprDiff = new TH1F("Pho_cescprdiff","Ces-Cpr",50,-28.0,28.0); fHist.fCprTrk = new TH1F("Pho_cprtrk","Cpr-Trk",50,-28.0,28.0); fHist.fNCpr2 = new TH1F("Pho_ncpr2","N CPR2",5,-0.5,4.5); fHist.fQCpr2 = new TH1F("Pho_qcpr2","Q CPR2",30,0.0,200.0); fHist.fPCpr2 = new TH1F("Pho_pcpr2","Pad CPR2",54,-0.5,53.5); fHist.fNEmtTdc = new TH1F("Pho_NEmtTdc","N Emt TDC",51,-0.5,51.5); fHist.fEmtTdc = new TH1F("Pho_EmtTdc", "Emt TDC",150,0.0,1000.0); fHist.fNEmtTime = new TH1F("Pho_NEmtTime","N Emt Time",51,-0.5,51.5); fHist.fEmtTime = new TH1F("Pho_EmtTime", "Emt Time",300,-150.0,150.0); fHist.fHadTime = new TH1F("Pho_HadTime", "Had Time",300,-150.0,150.0); fHist.fEmMap = new TH2F("Pho_EmMap", "Em Map",54,-0.5,53.5,48,-0.5,47.5); fHist.fEmtDet = new TH1F("Pho_EmtDet","Emt Det",11,-0.5,10.5); fHist.fHadMap = new TH2F("Pho_HadMap", "Had Map",54,-0.5,53.5,48,-0.5,47.5); fHist.fEmtEmMap = new TH2F("Pho_EmtEmMap", "Emt Em Map",54,-0.5,53.5,48,-0.5,47.5); fHist.fEmtHadMap = new TH2F("Pho_EmtHadMap", "Emt Had Map",54,-0.5,53.5,48,-0.5,47.5); fHist.fRRHadEm = new TH1F("Pho_RRhadem","Hadem Cuts",50,0.,1.0); fHist.fRRCo4 = new TH1F("Pho_RRco4","Co4 Cuts",50,0.0,50.0); fHist.fRRChi = new TH1F("Pho_RRchi","Chi Cuts",50,0.,30.); fHist.fRRSumpt4 = new TH1F("Pho_RRsumpt4","Sumpt4 Cuts",30,0.,50.); fHist.fEtP = new TH1F("Pho_etP","Et Plg",50,0,100.0); fHist.f3x3 = new TH1F("Pho_3x3", "Pes 3x3 chi2",50,0.0,50.0); fHist.fPesE = new TH1F("Pho_pese", "Pes E",50,0.0,500.0); fHist.fPesERat= new TH1F("Pho_pese_rat", "Pes E Rat",100,0.0,5.0); fHist.fPesX = new TH1F("Pho_pesx", "Pes x",50,-180.0,180.0); fHist.fPesY = new TH1F("Pho_pesy", "Pes y",50,-180.0,180.0); fHist.fPesPhi = new TH1F("Pho_pesphi","Pes phi",50,0.0,6.29); fHist.fPesR = new TH1F("Pho_pesxr", "Pes R",50,0.0,180.0); fHist.fPesDeltaR = new TH1F("Pho_delatr", "Pes Delta R",50,0.0,20.0); fHist.fPes5x9U = new TH1F("Pho_pes5x9u", "Pes 5/9 U",50,0.0,2.0); fHist.fPes5x9V = new TH1F("Pho_pes5x9v", "Pes 5/9 V",50,0.0,2.0); fHist.fPPRE = new TH1F("Pho_ppre", "PPR E/PEM E",50,0.0,1.0); fHist.fL1Bits = new TH1F("Pho_L1Bits", "L1 Bits",31,-0.5,30.5); fHist.fL1BitsPho = new TH1F("Pho_L1Bits_pho","L1 Bits",31,-0.5,30.5); fHist.fL2Bits = new TH1F("Pho_L2Bits", "L2 Bits",51,-0.5,50.5); fHist.fL2BitsPho = new TH1F("Pho_L2Bits_pho","L2 Bits",51,-0.5,50.5); fHist.fL3Bits = new TH1F("Pho_L3Bits", "L3 Bits",41,-0.5,40.5); fHist.fL3BitsPho = new TH1F("Pho_L3Bits_pho","L3 Bits",41,-0.5,40.5); fHist.fVtxN = new TH1F("Pho_vtx_n","VtxN",21,-0.5,20.5); fHist.fVtxZv = new TH1F("Pho_vtx_zv","VtxZv",50,-100.,100.); fHist.fCeseRat2 = new TH1F("Pho_ceseRat2","Ces Wire E/CEM E",50,0.,2.0); fHist.fCeseRat3 = new TH1F("Pho_ceseRat3", "Ces Wire E/CEM E, Et>50",50,0.,2.0); fHist.fTimeC = new TH1F("Pho_time_s","Central Time",500,-500.,500.0); fHist.fTimeP = new TH1F("Pho_time_p","Plug Time",500,-500.,500.0); fHist.fCrackN = new TH1F("Pho_crackn","Crack N",51,-0.5,50.5); fHist.fCrackE = new TH1F("Pho_cracke","Crack E",100,0.,500.0); fHist.fStub = new TH1F("Pho_stub", "N Stub",11,-0.5,10.5); fHist.fCosStub = new TH1F("Pho_cstub", "N CosStub",11,-0.5,10.5); fHist.fCosStubPho= new TH1F("Pho_cstubp","N CosStubPho",11,-0.5,10.5); fHist.fLikeC = new TH1F("Pho_likec","Em log Likelihood Cen",60,-10.0,8.0); fHist.fLikeP = new TH1F("Pho_likep","Em log Likelihood Plg",60,-8.0,8.0); fHist.fSiExpC = new TH1F("Pho_SiExpC","Si Expected trk Cen",41,-0.5,40.5); fHist.fSiExpPhiC = new TH1F("Pho_SiExpPhiC","Si Expected trk-phi Cen",21,-0.5,20.5); fHist.fSiExpConeC = new TH1F("Pho_SiExpConeC","Si Expected cone Cen",101,-0.5,400.5); fHist.fSiExpP = new TH1F("Pho_SiExpP","Si Expected trk Plg",41,-0.5,40.5); fHist.fSiExpPhiP = new TH1F("Pho_SiExpPhiP","Si Expected trk-phi Plg",21,-0.5,20.5); fHist.fSiExpConeP = new TH1F("Pho_SiExpConeP","Si Expected cone Plg",101,-0.5,400.5); } //_____________________________________________________________________________ int TPhotonMonitor::BeginJob() { // register the data block fHeaderBlock = (TStnHeaderBlock*) RegisterDataBlock("HeaderBlock","TStnHeaderBlock"); fCalDataBlock = (TCalDataBlock*) RegisterDataBlock("CalDataBlock","TCalDataBlock"); fCcrDataBlock = (TCcrDataBlock*) RegisterDataBlock("CcrDataBlock","TCcrDataBlock"); fEmtDataBlock = (TEmtDataBlock*) RegisterDataBlock("EmtDataBlock","TEmtDataBlock"); fEmTimingBlock = (TStnEmTimingBlock*) RegisterDataBlock("EmTimingBlock","TStnEmTimingBlock"); //fCesDataBlock = (TCesDataBlock*) // RegisterDataBlock("CesDataBlock","TCesDataBlock"); //fCprDataBlock = (TCprDataBlock*) // RegisterDataBlock("CprDataBlock","TCprDataBlock"); fJetBlock = (TStnJetBlock*) RegisterDataBlock("JetBlock","TStnJetBlock"); fMetBlock = (TStnMetBlock*) RegisterDataBlock("MetBlock","TStnMetBlock"); fTrackBlock = (TStnTrackBlock*) RegisterDataBlock("TrackBlock","TStnTrackBlock"); //fClusterBlock = (TStnClusterBlock*) // RegisterDataBlock("ClusterBlock","TStnClusterBlock"); fPhotonBlock = (TStnPhotonBlock*) RegisterDataBlock("PhotonBlock","TStnPhotonBlock"); fTriggerBlock = (TStnTriggerBlock*) RegisterDataBlock("TriggerBlock","TStnTriggerBlock"); // fDcasDataBlock = (TDcasDataBlock*) // RegisterDataBlock("DcasDataBlock","TDcasDataBlock"); fVertexBlock = (TStnVertexBlock*) RegisterDataBlock("VertexBlock","TStnVertexBlock"); //fElectronBlock = (TStnElectronBlock*) // RegisterDataBlock("ElectronBlock","TStnElectronBlock"); fMuonBlock = (TStnMuonBlock*) RegisterDataBlock("MuonBlock","TStnMuonBlock"); // book histograms BookHistograms(); nevent = 0; return 0; } //_____________________________________________________________________________ int TPhotonMonitor::BeginRun() { return 0; } //_____________________________________________________________________________ int TPhotonMonitor::Event(int ientry) { if(fHeaderBlock) fHeaderBlock->GetEntry(ientry); fPhotonBlock-> GetEntry(ientry); if(mode==0) { if(fCalDataBlock) fCalDataBlock->GetEntry(ientry); if(fCcrDataBlock) fCcrDataBlock->GetEntry(ientry); fEmtDataBlock->GetEntry(ientry); fEmTimingBlock->GetEntry(ientry); //if(fCesDataBlock) fCesDataBlock->GetEntry(ientry); //if(fCprDataBlock) fCprDataBlock->GetEntry(ientry); fJetBlock->GetEntry(ientry); fTrackBlock->GetEntry(ientry); //fClusterBlock->GetEntry(ientry); if(fMetBlock) fMetBlock->GetEntry(ientry); if(fTriggerBlock) fTriggerBlock->GetEntry(ientry); // if(fDcasDataBlock) fDcasDataBlock->GetEntry(ientry); if(fVertexBlock) fVertexBlock->GetEntry(ientry); //if(fElectronBlock) fElectronBlock->GetEntry(ientry); if(fMuonBlock) fMuonBlock->GetEntry(ientry); if(!fHeaderBlock->McFlag()) TrgAna(); } PhoAna(ientry); nevent++; return 0; } //_____________________________________________________________________________ int TPhotonMonitor::PhoAna(int ientry) { if(nevent<20) { fEmTimingBlock->Print(); } int n= fCalDataBlock->NTowers(); for(int i=0; iTower(i); if(tow->EmEnergy()>0) fHist.fEmMap->Fill(tow->IEta(),tow->IPhi()); if(tow->HadEnergy()>0) fHist.fHadMap->Fill(tow->IEta(),tow->IPhi()); } int npho = fPhotonBlock->NPhotons(); //int nces = fClusterBlock->NCesUnbClusters(); //int ncpr = fClusterBlock->NCprUnbClusters(); float etmax = 0; bool q0; fHist.fNpho->Fill(npho); for (int i=0; iPhoton(i)); if(pho.fEt>etmax) {etmax = pho.fEt;} //bool qslide = pho.fHadem<(0.055 + 0.00045*pho.fEt); q0 = (pho.fCo4<2.0 && pho.fEt>25.0 && pho.fHadem<0.125 && pho.fDetector==0 && pho.fChi<20.0); fHist.fDet->Fill(pho.fDetector); fHist.fEt->Fill(pho.fEt); fHist.fPhi->Fill(pho.fPhi); fHist.fDteta->Fill(pho.fDteta); fHist.fCo4->Fill(pho.fCo4); fHist.fCo4PJW->Fill(pho.fCo4PJW); fHist.fHadem->Fill(pho.fHadem); fHist.fHademT->Fill(pho.fHademT); fHist.fPhoZv->Fill(pho.fZv); fHist.fSeedPhi->Fill(pho.PhiSeedIndex()); fHist.fSeedEta->Fill(pho.EtaSeedIndex()); fHist.fTowEt ->Fill(pho.fTowEt); fHist.fTowPhi ->Fill(pho.fTowPhi); fHist.fTowEta ->Fill(pho.fTowEta); fHist.fTowIso ->Fill(pho.fTowIso); fHist.fStub ->Fill(pho.NStub()); fHist.fCosStub ->Fill(pho.NCosStub()); fHist.fCosStubPho ->Fill(pho.NCosStubPho()); fHist.fCosStubPho ->Fill(pho.NCosStubPho()); // raw emtiming info int nemt=0; for(int it=0; it<12; it++) { TTdcModule& tdc = fEmtDataBlock->EmtTdc(it); int nh = tdc.NDataWords(); nemt += nh; for(int ih=0; ihLeadingEdge(); fHist.fEmtTdc->Fill(t); } } fHist.fNEmtTdc->Fill(nemt); fHist.fNEmtTime->Fill(fEmTimingBlock->NHits()); for(int it=0; itNHits(); it++) { fHist.fEmtDet->Fill(fEmTimingBlock->Det(it)); if(fEmTimingBlock->Det(it)<=1) { fHist.fEmtTime->Fill(fEmTimingBlock->Time(it)); fHist.fEmtEmMap->Fill(fEmTimingBlock->IEta(it), fEmTimingBlock->IPhi(it)); } else { fHist.fHadTime->Fill(fEmTimingBlock->Time(it)); fHist.fEmtHadMap->Fill(fEmTimingBlock->IEta(it), fEmTimingBlock->IPhi(it)); } } if(nevent<20) { fEmTimingBlock->Print(); int n= fCalDataBlock->NTowers(); for(int i=0; iTower(i); } } if(pho.fDetector==0) { fHist.fEtC->Fill(pho.fEt); fHist.fLshr->Fill(pho.fLshr); fHist.fN3d->Fill(pho.fN3d/3.0); fHist.fPt->Fill(pho.fPt); fHist.fSumpt4->Fill(pho.fSumpt4); fHist.fChi->Fill(pho.fChi); fHist.fCesx->Fill(pho.fCesx); fHist.fCesz->Fill(pho.fCesz); fHist.fCese->Fill(pho.fCese); float rat = (pho.fE>0 ? pho.fCese/pho.fE : -1.0); fHist.fCeseRat->Fill(rat); rat = (pho.fE>0 ? pho.CesStripE()/pho.fE : -1.0); fHist.fCeseRatStr->Fill(rat); if(q0) fHist.fCeseRat2->Fill(rat); if(q0 && pho.fEt>50.0) fHist.fCeseRat3->Fill(rat); rat = (pho.CesWireE()>0.0? pho.CesStripE()/ pho.CesWireE() : -1); fHist.fCeseSW->Fill(rat); fHist.fCeseW2->Fill(pho.CesWireE2()); fHist.fCeseS2->Fill(pho.CesStripE2()); float x = pho.fCpr5ph; if(x<0.0) x= 0.0; fHist.fCpr5ph->Fill(x); fHist.fCpr5ps->Fill(pho.fCpr5ps); fHist.fCescprx->Fill(pho.fCescprx); fHist.fCescprq->Fill(pho.fCescprq); fHist.fCprWht->Fill(pho.fCprwht); fHist.fCesWht->Fill(pho.fCeswht); fHist.fLikeC->Fill(pho.fLike); if(pho.fCese>0.1 && pho.fCescprq>1000.0) { fHist.fCesCprDiff->Fill(pho.fCesx-pho.fCescprx); } if(mode==0) { if(q0 && pho.fCescprq>500) { fHist.fCprTrk->Fill(TPhotonUtil::CprTrack(&pho,fTrackBlock)); } } fHist.fNCpr2->Fill(pho.NCpr2()); for(int i=0;iFill(pho.Cpr2E(i)); fHist.fPCpr2->Fill(pho.Cpr2Ind(i)); } fHist.fTowPatC->Fill(pho.TowerPattern()); //cout << " N tow cent " << pho.NTower() << endl; fHist.fNTowerC ->Fill(pho.NTower()); // cleanup cuts if(pho.fEt>25.0) { if(pho.fSumpt4<5.0 && pho.fCo4<2.0 && pho.fChi<20.0) fHist.fRRHadEm->Fill(pho.fHadem); if(pho.fSumpt4<5.0 && pho.fChi<20.0 && pho.fHademFill(pho.fCo4); if(pho.fSumpt4<5.0 && pho.fCo4<2.0 && pho.fHademFill(pho.fChi); if(pho.fCo4<2.0 && pho.fChi<20.0 && pho.fHademFill(pho.fSumpt4); fHist.fSiExpC->Fill(pho.SiExp()); fHist.fSiExpPhiC->Fill(pho.SiExpPhi()); fHist.fSiExpConeC->Fill(pho.SiExpCone()); } fHist.fTimeC->Fill(pho.fTime); } else { // Plug fHist.fEtP->Fill(pho.fEt); fHist.f3x3->Fill(pho.fChi3x3); fHist.fPesE->Fill(pho.fPesE); float rat = (pho.fE>0 ? pho.fPesE/pho.fE : -1.0); fHist.fPesERat->Fill(rat); rat = (pho.fE>0 ? pho.PprE()/pho.fE : -1.0); fHist.fPPRE->Fill(rat); fHist.fLikeP->Fill(pho.fLike); if(pho.fPesE>0.0) { fHist.fPesX->Fill(pho.fPesX); fHist.fPesY->Fill(pho.fPesY); float phi = atan2(-pho.fPesY,-pho.fPesX)+M_PI; fHist.fPesPhi->Fill(phi); float r = sqrt(pho.fPesX*pho.fPesX+pho.fPesY*pho.fPesY); fHist.fPesR->Fill(r); } fHist.fTowPatP->Fill(pho.TowerPattern()); //cout << " N tow plug " << pho.NTower() << endl; fHist.fNTowerP ->Fill(pho.NTower()); fHist.fTimeP->Fill(pho.fTime); if(pho.Et()>25.0) { fHist.fSiExpP->Fill(pho.SiExp()); fHist.fSiExpPhiP->Fill(pho.SiExpPhi()); fHist.fSiExpConeP->Fill(pho.SiExpCone()); fHist.fPesDeltaR->Fill(pho.PesDeltaR()); fHist.fPes5x9U->Fill(pho.Prof5by9U()); fHist.fPes5x9V->Fill(pho.Prof5by9V()); } } // endif cen or plug if(nevent<20) PrintLinks(fPhotonBlock, i); } //end pho loop if(mode==0) { if(fVertexBlock) { int nvrt = fVertexBlock->NVertices(); fHist.fVtxN->Fill(nvrt); for(int ivrt=0; ivrtFill(fVertexBlock->Vertex(ivrt)->Z()); } else fHist.fVtxN->Fill(-1.0); // crack chamber plots... if(fCcrDataBlock) { for(int is=0; is<1; is++) { for(int iw=0; iw<24; iw++) { fHist.fCrackN->Fill(fCcrDataBlock->GetNHitPads(is,iw)); for(int i=0; i<10; i++) { float e = fCcrDataBlock->GetPadData(is,iw,i); if(e>0.0) fHist.fCrackE->Fill(e); } } } } } return 0; } //_____________________________________________________________________________ int TPhotonMonitor::TrgAna() { int npho = fPhotonBlock->NPhotons(); if(fTriggerBlock==NULL) return 1; TTsid& tsid = *(fTriggerBlock->Tsid()); TTfrd& tfrd = *(fTriggerBlock->Tfrd()); TTl1d& tl1d = *(fTriggerBlock->Tl1d()); TTl3d& tl3d = *(fTriggerBlock->Tl3d()); fHist.fL1Bits->Fill(-1.0); // number evts in underflow fHist.fL3Bits->Fill(-1.0); // number evts in underflow if(npho>0) { fHist.fL1BitsPho->Fill(-1.0); // number evts in underflow fHist.fL3BitsPho->Fill(-1.0); // number evts in underflow } for(int i=0; i<32; i++) { if(tfrd.PrescaledL1Bit(i)) { fHist.fL1Bits->Fill(i); if(npho>0) fHist.fL1BitsPho->Fill(i); } if(tl3d.PathPassed(i)) { fHist.fL3Bits->Fill(i); if(npho>0) fHist.fL3BitsPho->Fill(i); } } return 0; } //------------------------------------------------------- void TPhotonMonitor::Plot(int page) { if(page==0 || page==1) { TCanvas * c1= new TCanvas("Pho_page1","Pho Page 1",100,100,600,600); c1->Divide(2,2); c1->cd(1); fHist.fNpho->Draw(); c1->cd(2); fHist.fDet->Draw(); c1->cd(3); fHist.fEt->Draw(); c1->cd(4); fHist.fPhi->Draw(); } if(page==0 || page==2) { TCanvas * c2= new TCanvas("Pho_page2","Pho Page 2",150,150,600,600); c2->Divide(2,3); c2->cd(1); fHist.fDteta->Draw(); c2->cd(2); fHist.fCo4PJW->Draw(); c2->cd(3); fHist.fHadem->Draw(); c2->cd(4); fHist.fPhoZv->Draw(); c2->cd(5); fHist.fHademT->Draw(); } if(page==0 || page==3) { TCanvas * c3= new TCanvas("Pho_page3","Pho Page 3",200,200,600,800); c3->Divide(2,3); c3->cd(1); fHist.fSeedPhi->Draw(); c3->cd(2); fHist.fSeedEta->Draw(); c3->cd(3); fHist.fTowEt->Draw(); c3->cd(4); fHist.fTowPhi->Draw(); c3->cd(5); fHist.fTowEta->Draw(); c3->cd(6); fHist.fTowIso->Draw(); } if(page==0 || page==4) { TCanvas * c4= new TCanvas("Pho_page4","Pho Page 4",250,250,600,600); c4->Divide(2,2); c4->cd(1); fHist.fNTowerC->Draw(); c4->cd(2); fHist.fTowPatC->Draw(); c4->cd(3); fHist.fEtC->Draw(); c4->cd(4); fHist.fLshr->Draw(); } if(page==0 || page==5) { TCanvas * c5= new TCanvas("Pho_page5","Pho Page 5",300,300,600,600); c5->Divide(2,2); c5->cd(1); fHist.fN3d->Draw(); c5->cd(2); fHist.fPt->Draw(); c5->cd(3); fHist.fSumpt4->Draw(); //c5->cd(4); fHist.->Draw(); } if(page==0 || page==6) { TCanvas * c6= new TCanvas("Pho_page6","Pho Page 6",350,350,600,800); c6->Divide(2,3); c6->cd(1); fHist.fChi->Draw(); c6->cd(2); fHist.fCese->Draw(); c6->cd(3); fHist.fCeseRat->Draw(); c6->cd(4); fHist.fCesx->Draw(); c6->cd(5); fHist.fCesz->Draw(); //c6->cd(5); fHist.fChi->Draw(); } if(page==0 || page==7) { TCanvas * c7= new TCanvas("Pho_page7","Pho Page 7",400,400,600,600); c7->Divide(2,2); c7->cd(1); fHist.fCpr5ps->Draw(); c7->cd(2); fHist.fCpr5ph->Draw(); c7->cd(3); fHist.fCescprx->Draw(); c7->cd(4); fHist.fCescprq->Draw(); } if(page==0 || page==8) { TCanvas * c8= new TCanvas("Pho_page8","Pho Page 8",450,450,600,600); c8->Divide(2,2); c8->cd(1); fHist.fCprWht->Draw(); c8->cd(2); fHist.fCesWht->Draw(); c8->cd(3); fHist.fCesCprDiff->Draw(); } if(page==0 || page==9) { TCanvas * c9= new TCanvas("Pho_page9","Pho Page 9",500,500,600,600); c9->Divide(2,3); c9->cd(1); fHist.fEtP->Draw(); c9->cd(2); fHist.fNTowerP->Draw(); c9->cd(3); fHist.f3x3->Draw(); c9->cd(4); fHist.fPesE->Draw(); c9->cd(5); fHist.fPesERat->Draw(); c9->cd(6); fHist.fPPRE->Draw(); } if(page==0 || page==10) { TCanvas * c10= new TCanvas("Pho_page10","Pho Page 10",550,550,600,600); c10->Divide(2,3); c10->cd(1); fHist.fPesX->Draw(); c10->cd(2); fHist.fPesY->Draw(); c10->cd(3); fHist.fPesPhi->Draw(); c10->cd(4); fHist.fPesR->Draw(); } if(page==0 || page==11) { TCanvas * c11= new TCanvas("Pho_page11","Pho Page 11",600,600,600,600); c11->Divide(2,2); c11->cd(1); fHist.fL1Bits->Draw(); c11->cd(2); fHist.fL1BitsPho->Draw(); c11->cd(3); fHist.fL3Bits->Draw(); c11->cd(4); fHist.fL3BitsPho->Draw(); } if(page==0 || page==12) { TCanvas * c12= new TCanvas("Pho_page12","Pho Page 12",650,650,600,600); c12->Divide(2,2); c12->cd(1); fHist.fTimeC->Draw(); c12->cd(2); fHist.fTimeP->Draw(); c12->cd(3); fHist.fVtxN->Draw(); c12->cd(4); fHist.fVtxZv->Draw(); } if(page==0 || page==13) { TCanvas * c13= new TCanvas("Pho_page13","Pho Page 13",700,700,600,600); c13->Divide(2,2); c13->cd(1); fHist.fRRHadEm->Draw(); c13->cd(2); fHist.fRRCo4->Draw(); c13->cd(3); fHist.fRRChi->Draw(); c13->cd(4); fHist.fRRSumpt4->Draw(); } if(page==0 || page==14) { TCanvas * c14= new TCanvas("Pho_page14","Pho Page 14",750,750,600,600); c14->Divide(2,2); c14->cd(1); fHist.fStub->Draw(); c14->cd(2); fHist.fCosStub->Draw(); c14->cd(3); fHist.fCosStubPho->Draw(); } if(page==0 || page==15) { TCanvas * c15= new TCanvas("Pho_page15","Pho Page 15",800,800,600,600); c15->Divide(2,2); c15->cd(1); fHist.fLikeC->Draw(); c15->cd(2); fHist.fLikeP->Draw(); } if(page==0 || page==16) { TCanvas * c16= new TCanvas("Pho_page16","Pho Page 16",850,850,600,600); c16->Divide(2,3); c16->cd(1); fHist.fSiExpC->Draw(); c16->cd(3); fHist.fSiExpPhiC->Draw(); c16->cd(5); fHist.fSiExpConeC->Draw(); c16->cd(2); fHist.fSiExpP->Draw(); c16->cd(4); fHist.fSiExpPhiP->Draw(); c16->cd(6); fHist.fSiExpConeP->Draw(); } if(page==0 || page==17) { TCanvas * c17= new TCanvas("Pho_page17","Pho Page 17",850,850,600,600); c17->Divide(2,2); c17->cd(1); fHist.fPesDeltaR->Draw(); c17->cd(2); fHist.fPes5x9U->Draw(); c17->cd(3); fHist.fPes5x9V->Draw(); } } int TPhotonMonitor::PrintLinks(TStnPhotonBlock* blk, int pho) { const TStnLinkBlock* links = blk->TowerLinkList(); TStnPhoton* phop = blk->Photon(pho); cout << "Photon # " << pho << " det " << phop->Detector() << " ntowers " << phop->NTower() << " towpat " << phop->TowerPattern() << " phi tow " << phop->PhiSeedIndex() << " eta tow " << phop->EtaSeedIndex() << endl; int nlink = links->NLinks(pho); cout << "Nlinks " << nlink << endl; for(int ilink=0; ilinkIndex(pho,ilink); int iphi = l & 0x3F; int ieta = (l>>8) & 0x3F; int istt = (l>>16) & 0xFFFF; cout << " Link " << ilink << " returns: " << l << " phi " << iphi << " ieta " << ieta << " istat " << istt << endl; } cout << "Ces Wire: " << phop->CesWireCluster() << " Ces Strip: " << phop->CesStripCluster() << " Cpr Unbias: " << phop->CprUnbCluster() << " Pes U: " << phop->PesUCluster() << " Pes V: " << phop->PesVCluster() << endl; return 0; } //_____________________________________________________________________________ int TPhotonMonitor::EndJob() { printf("----- end job: ---- %s\n",GetName()); return 0; }