00001
00002
00003
00004
00005
00006
00007
00008
00009 void ReadStJets(int nevents = 10, const char* jetfile = "Jets_pt15_25_01.root", const char* skimfile = "Skim_pt15_25_01.root")
00010 {
00011
00012 gSystem->Load("StJets");
00013 gSystem->Load("StJetSkimEvent");
00014
00015
00016 TChain* jetchain = new TChain("jet");
00017 TChain* skimchain = new TChain("jetSkimTree");
00018
00019
00020 jetchain->Add(jetfile);
00021 skimchain->Add(skimfile);
00022
00023
00024 StJetSkimEvent* skimevent = 0;
00025 skimchain->SetBranchAddress("skimEventBranch",&skimevent);
00026
00027
00028 for (int iEvent = 0; iEvent < nevents; ++iEvent) {
00029
00030 if (jetchain->GetEvent(iEvent) <= 0 || skimchain->GetEvent(iEvent) <= 0) break;
00031
00032
00033 for (int iBranch = 0; iBranch < jetchain->GetNbranches(); ++iBranch) {
00034 TBranch* branch = (TBranch*)jetchain->GetListOfBranches()->At(iBranch);
00035 cout << "Branch #" << iBranch << ": " << branch->GetName() << endl;
00036
00037
00038 StJets* stjets = *(StJets**)branch->GetAddress();
00039
00040
00041 assert(stjets->runId() == skimevent->runId() && stjets->eventId() == skimevent->eventId());
00042
00043
00044 cout << "iEvent = " << iEvent << endl;
00045 cout << "runId = " << stjets->runId() << endl;
00046 cout << "eventId = " << stjets->eventId() << endl;
00047
00048 TVector3 vertex(skimevent->bestVert()->position());
00049 cout << "vx = " << vertex.x() << ", vy = " << vertex.y() << ", vz = " << vertex.z() << endl;
00050
00051
00052 cout << "nJets = " << stjets->nJets() << endl;
00053 for (int iJet = 0; iJet < stjets->nJets(); ++iJet) {
00054 StJet* jet = (StJet*)stjets->jets()->At(iJet);
00055 cout << "Jet #" << iJet << ": jetPt = " << jet->jetPt << ", jetEta = " << jet->jetEta << ", jetPhi = " << jet->jetPhi
00056 << ", nTracks = " << jet->nTracks << ", nBtowers = " << jet->nBtowers << ", nEtowers = " << jet->nEtowers
00057 << endl;
00058
00059
00060 TObjArray tracks = stjets->tracks(iJet);
00061 if (strcmp(branch->GetName(),"PythiaConeJets") == 0) {
00062 for (int iTrack = 0; iTrack < tracks.GetEntriesFast(); ++iTrack) {
00063 TrackToJetIndex* track = (TrackToJetIndex*)tracks.At(iTrack);
00064 cout << "Particle #" << iTrack << ": id = " << track->id() << ", pdg = " << track->pdg()
00065 << ", status = " << track->status()
00066 << ", pt = " << track->Pt() << ", eta = " << track->Eta() << ", phi = " << track->Phi()
00067 << ", e = " << track->E() << ", m = " << track->M()
00068 << endl;
00069 }
00070 }
00071 else {
00072 for (int iTrack = 0; iTrack < tracks.GetEntriesFast(); ++iTrack) {
00073 TrackToJetIndex* track = (TrackToJetIndex*)tracks.At(iTrack);
00074 cout << "Track #" << iTrack << ": id = " << track->trackId() << ", detId = " << track->detectorId()
00075 << ", pt = " << track->Pt() << ", eta = " << track->Eta() << ", phi = " << track->Phi()
00076 << endl;
00077 }
00078 }
00079
00080
00081 TObjArray towers = stjets->towers(iJet);
00082 for (int iTower = 0; iTower < towers.GetEntriesFast(); ++iTower) {
00083 TowerToJetIndex* tower = (TowerToJetIndex*)towers.At(iTower);
00084 cout << "Tower #" << iTower << ": id = " << tower->towerId() << ", detId = " << tower->detectorId()
00085 << ", pt = " << tower->Pt() << ", eta = " << tower->Eta() << ", phi = " << tower->Phi()
00086 << endl;
00087 }
00088 }
00089 }
00090
00091 cout << endl;
00092 }
00093 }