//----------------------------------------------------------------------------- // 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; } //_____________________________________________________________________________ int TStntuple::PrintElectron(TStnElectron* Ele, TStnElectronBlock* ElectronBlock, TCalDataBlock* CalDataBlock) { int banner_printed(0); int nt, key, ieta, iphi; TObjArray list; TCalTower *seed_tower, *tower; // print electron itself Ele->Print(); // print electron towers int iele = Ele->Number(); TStnLinkBlock* link_list = ElectronBlock->TowerLinkList(); nt = link_list->NLinks(iele); key = link_list->Index(iele,0); ieta = (key >> 8) & 0xff; iphi = (key ) & 0xff; seed_tower = CalDataBlock->Tower(ieta,iphi); seed_tower->Print("banner+data"); for (int i=1; iIndex(iele,i); ieta = (key >> 8) & 0xff; iphi = (key ) & 0xff; tower = CalDataBlock->Tower(ieta,iphi); tower->Print("data"); } printf("\n"); // 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 nt = CalDataBlock->GetListOfTowers(seed_tower->Eta(), seed_tower->Phi(), 0.4, &list); for (int j=0; jPrint("data"); } return 0; }