00001 void SpinAnalysisTreeReaderMIT(const long nevents = 20) {
00002 LoadSpinTreeLibs();
00003
00004
00005 StSpinTreeReader *reader = new StSpinTreeReader();
00006
00007
00008 reader->selectDataset("StSpinTree/datasets/run6_mit.dataset");
00009
00010
00011
00012 reader->connectJets = true;
00013 reader->connectNeutralJets = false;
00014 reader->connectChargedPions = true;
00015 reader->connectBemcPions = true;
00016 reader->connectBemcElectrons = true;
00017 reader->connectEemcPions = false;
00018
00019
00020
00021 reader->selectRun(7132007);
00022
00023
00024
00025 reader->selectTrigger(137221);
00026 reader->selectTrigger(137222);
00027 reader->selectTrigger(137611);
00028 reader->selectTrigger(137622);
00029 reader->selectTrigger(5);
00030
00031
00032 reader->requireDidFire = true;
00033 reader->requireShouldFire = true;
00034
00035 StJetSkimEvent *ev = reader->event();
00036
00037 long entries = reader->GetEntries();
00038 if(entries > nevents) entries = nevents;
00039 for(int i=0; i<entries; i++) {
00040 reader->GetEntry(i);
00041
00042
00043 int runId = ev->runId();
00044 int eventId = ev->eventId();
00045
00046 printf("----------------Reading Event %d of %d----------------\n",i+1,entries);
00047 printf("basics: Run = %d, Event = %d\n",runId,eventId);
00048
00049
00050 TClonesArray *trigs = ev->triggers();
00051 for(int j=0; j<trigs->GetEntries(); j++) {
00052 StJetSkimTrig* aTrig = (StJetSkimTrig*)trigs->At(j);
00053 int trigId = aTrig->trigId();
00054 bool didFire = aTrig->didFire();
00055 int shouldFire = aTrig->shouldFire();
00056
00057 StJetSkimTrigHeader *header = ev->trigHeader(trigId);
00058 if(!header) {
00059 printf("ERROR LOADING TRIGGER HEADER FOR %d\n",trigId);
00060 break;
00061 }
00062 float prescale = header->prescale;
00063
00064 printf("trigger = %6d prescale = %8.1f didFire = %d shouldFire =% d\n",trigId,prescale,didFire,shouldFire);
00065 }
00066
00067
00068 int nVertices = ev->vertices()->GetEntries();
00069 StJetSkimVert *bestVert = ev->bestVert();
00070 if(bestVert) {
00071 printf("nVertices = %d position of best = %f\n",nVertices,bestVert->position()[2]);
00072 }
00073 else if(nVertices == 0){
00074 printf("no vertices found in this event\n");
00075 }
00076 else {
00077 printf("ERROR LOADING BEST VERTEX IN THIS EVENT\n");
00078 }
00079
00080
00081
00082
00083 printf("nJets = %d\n",reader->nJets());
00084 for(int j=0; j<reader->nJets(); j++) {
00085 StJet* aJet = reader->jet(j);
00086 double R = aJet->btowEtSum/aJet->Et();
00087 if(bestVert) printf("jet pt=%7.4f jet eta=% 1.4f det eta=% 1.4f E_neu/E_tot=%1.4f\n",aJet->jetPt,aJet->jetEta,aJet->detEta(bestVert->position()[2]),R);
00088 else printf("jet pt=%7.4f jet eta=% 1.4f no vertex E_neu/E_tot=%1.4f\n",aJet->jetPt,aJet->jetEta,R);
00089 }
00090
00091
00092 printf("nChargedPions = %d\n",reader->nChargedPions());
00093 for(int j=0; j<reader->nChargedPions(); j++) {
00094 StChargedPionTrack* aPion = reader->chargedPion(j);
00095 printf("pt=%7.4f eta=% 1.4f nSigmaPion=% 1.4f\n",aPion->pt(),aPion->eta(),aPion->nSigmaPion());
00096 }
00097
00098
00099 printf("nNeutralPions = %d\n",reader->nBemcPions());
00100 for(int j=0; j<reader->nBemcPions(); j++) {
00101 TPi0Candidate* aPi0 = reader->bemcPion(j);
00102 printf("neutral pion mass=%f pt=%f eta=%f\n",aPi0->Mass(),aPi0->Pt(),aPi0->Eta());
00103 }
00104
00105 cout << "-----------------------------------------------------" << endl;
00106 }
00107
00108 delete reader;
00109 }
00110
00111 void LoadSpinTreeLibs() {
00112 gSystem->Load("StarSpinAnalyses");
00113 }