//----------------------------------------------------------------------------- // algorithms working on different STNTUPLE objects // Nov 26 2000 P.Murat //----------------------------------------------------------------------------- #include #include #include #include #include #include #include #include #include #include "Stntuple/obj/TStnPi0.hh" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "Stntuple/data/TXftTrack.hh" #include "HighLevelObjects/PhotonBackgroundComputer.hh" #include "CalorGeometry/CalParameters.hh" class CdfTrack; //_____________________________________________________________________________ int TStntuple::PrintTauTracks(TStnTau* Tau , TStnTauBlock* TauBlock, TStnTrackBlock* TrackBlock) { // print associated tracks TStnTrack* trk; int itau = Tau->Number(); int nt = Tau->NTracks30(); int banner_printed = 0; for (int i=0; iTrackNumber(itau,i); trk = TrackBlock->Track(itt); if (! banner_printed) { trk->Print("banner"); banner_printed = 1; } trk->Print("data"); } return 0; } //_____________________________________________________________________________ int TStntuple::PrintTauPi0s(TStnTau* Tau, TStnTauBlock* TauBlock, TStnPi0Block* Pi0Block) { // print associated pi0's int itau = Tau->Number(); int npi0 = TauBlock->Pi0LinkList()->NLinks(itau); // dont do that: Tau->NPi0(); int banner_printed = 0; for (int i=0; iPi0Number(itau,i); TStnPi0* pi0 = Pi0Block->Pi0(ipi); if (! banner_printed) { pi0->Print("banner"); banner_printed = 1; } pi0->Print("data"); } return 0; } //_____________________________________________________________________________ int TStntuple::PrintTauTowers(TStnTau* Tau, TStnTauBlock* TauBlock, TCalDataBlock* CalDataBlock) { // print towers in cone 0.4 around the tau cluster, I also want to print // whether a tower has been included into the cluster or not ... // this will have to wait int itau = Tau->Number(); // key = ieta<<8 + iphi TObjArray list; int nt, banner_printed, key, ieta, iphi; key = TauBlock->TowerKey(itau,0); ieta = (key >> 8) & 0xff; iphi = (key ) & 0xff; TCalTower* seed_tower = CalDataBlock->Tower(ieta,iphi); nt = CalDataBlock->GetListOfTowers(seed_tower->Eta(), seed_tower->Phi(), 0.4,&list); banner_printed = 0; for (int j=0; jPrint("banner"); banner_printed = 1; } tower->Print("data"); } return 0; } //_____________________________________________________________________________ int TStntuple::PrintTauBlock(TStnEvent* Event, Int_t PrintLevel) { TStnTauBlock* tau_block = (TStnTauBlock* )Event->GetDataBlock("TauBlock" ); TStnTrackBlock* trk_block = (TStnTrackBlock*)Event->GetDataBlock("TrackBlock"); TCalDataBlock* cal_block = (TCalDataBlock* )Event->GetDataBlock("CalDataBlock"); TStnPi0Block* pi0_block = (TStnPi0Block* )Event->GetDataBlock("Pi0Block" ); int ntaus = tau_block->NTaus(); for (int i=0; iTau(i); tau->Print("banner+data"); //----------------------------------------------------------------------------- // printe details about tau tracks, towers and pi0's //----------------------------------------------------------------------------- PrintTauTracks(tau,tau_block,trk_block); PrintTauTowers(tau,tau_block,cal_block); PrintTauPi0s (tau,tau_block,pi0_block); } return 0; } //_____________________________________________________________________________ int TStntuple::PrintJetTowers(TStnJet* Jet, TStnJetBlock* JetBlock, TCalDataBlock* CalDataBlock) { // print towers associated with the Jet TCalTower* tower; // key = ieta<<8 + iphi int ijet = Jet->Number(); int nt, banner_printed(0), key, ieta, iphi; nt = JetBlock->NTowers(ijet); for (int i=0; iTowerKey(ijet,i); ieta = (key >> 8) & 0xff; iphi = (key ) & 0xff; tower = CalDataBlock->Tower(ieta,iphi); if (! banner_printed) { tower->Print("banner"); banner_printed = 1; } tower->Print("data"); } return 0; } //_____________________________________________________________________________ int TStntuple::PrintJetTracks(TStnJet* Jet , TStnJetBlock* JetBlock, TStnTrackBlock* TrackBlock) { // print associated tracks TStnTrack* trk; int ijet = Jet->Number(); int nt = JetBlock->NTracks(ijet); int banner_printed = 0; for (int i=0; iTrackNumber(ijet,i); trk = TrackBlock->Track(itt); if (! banner_printed) { trk->Print("banner"); banner_printed = 1; } trk->Print("data"); } return 0; }