00001 #include <map>
00002
00003 void ReadJetTree2009(int nentries = 1e6,
00004 const char* jetfile = "st_physics_10143008_raw_6020001.jets.root",
00005 const char* skimfile = "st_physics_10143008_raw_6020001.skim.root")
00006 {
00007 cout << "nentries = " << nentries << endl;
00008 cout << "jetfile = " << jetfile << endl;
00009 cout << "skimfile = " << skimfile << endl;
00010 cout << endl;
00011
00012
00013 gSystem->Load("StJetEvent");
00014 gSystem->Load("StJetSkimEvent");
00015
00016
00017 TChain* jetChain = new TChain("jet");
00018 TChain* skimChain = new TChain("jetSkimTree");
00019
00020 jetChain->Add(jetfile);
00021 skimChain->Add(skimfile);
00022
00023
00024 StJetEvent* jetEvent = 0;
00025 jetChain->SetBranchAddress("ConeJets12",&jetEvent);
00026
00027
00028 StJetSkimEvent* skimEvent = 0;
00029 skimChain->SetBranchAddress("skimEventBranch",&skimEvent);
00030
00031
00032 for (int iEntry = 0; iEntry < nentries; ++iEntry) {
00033 if (jetChain->GetEvent(iEntry) <= 0 || skimChain->GetEvent(iEntry) <= 0) break;
00034
00035
00036 assert(jetEvent && skimEvent);
00037
00038
00039 assert(jetEvent->runId() == skimEvent->runId() && jetEvent->eventId() == skimEvent->eventId());
00040
00041
00042
00043 cout << "run: " << jetEvent->runId() << endl;
00044 cout << "event: " << jetEvent->eventId() << endl;
00045
00046
00047 cout << "triggers: ";
00048 TIter next(skimEvent->triggers());
00049 StJetSkimTrig* trig;
00050 while (trig = (StJetSkimTrig*)next()) {
00051 cout << trig->trigId() << " ";
00052 }
00053 cout << endl;
00054
00055 #if 0
00056
00057 StJetSkimTrig* trig = skimEvent->trigger(240410);
00058 if (!trig) continue;
00059 if (!trig->didFire()) continue;
00060 #endif
00061
00062
00063 map<int,int> barrelJetPatches = skimEvent->barrelJetPatchesAboveTh(1);
00064 map<int,int> endcapJetPatches = skimEvent->endcapJetPatchesAboveTh(1);
00065 map<int,int> overlapJetPatches = skimEvent->overlapJetPatchesAboveTh(1);
00066
00067 cout << "barrel jet patches above threshold: ";
00068 for (map<int,int>::const_iterator it = barrelJetPatches.begin(); it != barrelJetPatches.end(); ++it) {
00069 int jp = it->first;
00070 int adc = it->second;
00071 cout << "JP" << jp << "=" << adc << " ";
00072 }
00073 cout << endl;
00074
00075 cout << "endcap jet patches above threshold: ";
00076 for (map<int,int>::const_iterator it = endcapJetPatches.begin(); it != endcapJetPatches.end(); ++it) {
00077 int jp = it->first;
00078 int adc = it->second;
00079 cout << "JP" << jp << "=" << adc << " ";
00080 }
00081 cout << endl;
00082
00083 cout << "overlap jet patches above threshold: ";
00084 for (map<int,int>::const_iterator it = overlapJetPatches.begin(); it !=overlapJetPatches.end(); ++it) {
00085 int jp = it->first;
00086 int adc = it->second;
00087 cout << "JP" << jp << "=" << adc << " ";
00088 }
00089 cout << endl;
00090
00091 int bbctimebin = skimEvent->bbcTimeBin() >> 9 & 0xf;
00092 cout << "bbctimebin: " << bbctimebin << endl;
00093
00094 cout << "nvertices: " << jetEvent->numberOfVertices() << endl;
00095
00096 for (int iVertex = 0; iVertex < jetEvent->numberOfVertices(); ++iVertex) {
00097 StJetVertex* vertex = jetEvent->vertex(iVertex);
00098 cout << "Vertex #" << iVertex
00099 << ": vx=" << vertex->position().x()
00100 << " vy=" << vertex->position().y()
00101 << " vz=" << vertex->position().z() << endl;
00102
00103 cout << "njets: " << vertex->numberOfJets() << endl;
00104 for (int iJet = 0; iJet < vertex->numberOfJets(); ++iJet) {
00105 StJetCandidate* jet = vertex->jet(iJet);
00106 cout << "Jet #" << iJet
00107 << ": pt=" << jet->pt()
00108 << " eta=" << jet->eta()
00109 << " phi=" << jet->phi()
00110 << " rt=" << jet->neutralFraction()
00111 << " ntracks=" << jet->numberOfTracks()
00112 << " ntowers=" << jet->numberOfTowers() << endl;
00113
00114 for (int iTrack = 0; iTrack < jet->numberOfTracks(); ++iTrack) {
00115 StJetTrack* track = jet->track(iTrack);
00116 cout << "Track #" << iTrack
00117 << ": id=" << track->id()
00118 << " pt=" << track->pt()
00119 << " eta=" << track->eta()
00120 << " phi=" << track->phi() << endl;
00121 }
00122
00123 for (int iTower = 0; iTower < jet->numberOfTowers(); ++iTower) {
00124 StJetTower* tower = jet->tower(iTower);
00125 cout << "Tower #" << iTower
00126 << ": id=" << tower->id()
00127 << " detid=" << tower->detectorId()
00128 << " pt=" << tower->pt()
00129 << " eta=" << tower->eta()
00130 << " phi=" << tower->phi() << endl;
00131 }
00132 }
00133 }
00134 cout << endl;
00135 }
00136 }