Sort by:[Date]

Basic QA Plots

Select a trigger and charge combination to view QA summary plots.  Each point on a plot is a mean value of that quantity for the given run, while the error is sqrt(nentries).



The runs selected are those that passed jet QA, so it's not surprising that things generally look good.  Exceptions:
  • dE/dx, nSigmaPion, and nHitsFit are all out of whack around day 170.  I'll take a closer look to see if I can figure out what went wrong, but it's a small group of runs so in the end I expect to simply drop them.

StarSpinLibraries on OS X

Update 2007-07-19

StGammaEvent libraries are also available through this same project.  After building all targets you can do

gSystem->Load("StGammaEvent")
or just load StarSpinAnalyses, which will load StGammaEvent on-the-fly.  Everything not ending in "Maker" should be accessible, i.e. StGammaCandidates, StGammaFitterResults, etc.



One of the goals of the common Spin PWG analysis trees was that they should be readable without the full STAR framework.  The trees are certainly accessible in a plain interactive session, but some of the features are only really available if the class definitions have been loaded.  This page shows how to build those class libraries on a Mac with only ROOT installed.  Here's what we're going to do:
  1. Check out the Xcode project.  See SVN Repository Access if you don't have a Subversion client installed
  2. Set up the installation directory for the dynamic libraries and tell ROOT to look there
  3. Build the dynamic libraries and install them
  4. Test it out
The code for the first three steps is just

svn co http://deltag5.lns.mit.edu:8080/svn/StarSpinLibraries
cd StarSpinLibraries
./setup.sh
xcodebuild -alltargets

Then you can test it out by opening a ROOT session and doing

gSystem->Load("StarClassLibrary")
gSystem->Load("StMiniMcEvent")
gSystem->Load("StarSpinAnalyses")
gSystem->Load("StJets")

What's Included?

You've just installed four dynamic libraries in /usr/local/lib/star.  The StarClassLibrary and StMiniMcEvent targets build exact copies of the respective libraries from the StRoot framework.  StarSpinAnalyses includes
  • StJetSkimEvent
  • StJet
  • StChargedPionTrack
  • TPi0Candidate
  • StSpinTreeReader
  • FastAsymmetryMaker
  • StTamuRelLum
In other words, everything needed to read the current version of the common Spin PWG trees.  The StJets library includes the StJets and TrackToJetIndex class definitions.  You'll need it to read the raw jet trees.  Note that the StJetReader class is not yet included (planned for the future when I get a moment).

These libraries are installed and ready to use on deltag5, provided you modify your .rootrc to look in /usr/local/lib/star (setup.sh does this for you automatically if you're building from scratch).  Mike Betancourt was my lone beta tester and while we worked out a handful of glitches, I imagine there are use cases I haven't thought of yet.  In particular, the Xcode project assumes ROOT is installed in /sw. You'll need to edit some Project-level settings if that's not the case.  Feel free to contact me if you run into any problems.

Common Analysis Trees

The Spin PWG maintains a set of trees connecting datasets from the various inclusive measurements in a way that allows for easy particle correlation studies. This page describes how to access the data in those trees.

Location

RCF:    /star/institutions/mit/common/run6/spinTree/
PDSF:   /auto/pdsfdv34/starspin/common/run6/spinTree/
Anywhere:   root://deltag5.lns.mit.edu//Volumes/scratch/common/run6/spinTree/spinAnalyses_runnumber.tree.root

The last option uses xrootd to access read-only files stored on an MIT server from any computer with ROOT installed.  If you have an Intel Mac note that ROOT versions 5.13.06 - 5.14.00 have a bug (patched in 5.14.00/b) that prevents you from opening xrootd files.

Interactive Mode

The basic trees are readable in a simple interactive ROOT session.  Each particle type is stored in a separate tree, so you need to use TTree::AddFriend to connect things together before you draw.  For example:

root [1] TFile::Open("root://deltag5.lns.mit.edu//Volumes/scratch/common/run6/spinTree/spinAnalyses_7156028.tree.root"); root [2] .ls TXNetFile** root://deltag5.lns.mit.edu//Volumes/scratch/common/run6/spinTree/spinAnalyses_7156028.tree.root TXNetFile* root://deltag5.lns.mit.edu//Volumes/scratch/common/run6/spinTree/spinAnalyses_7156028.tree.root KEY: TProcessID ProcessID0;1 00013b6e-72c3-1640-a0e8-e5243780beef KEY: TTree spinTree;1 Spin PWG common analysis tree KEY: TTree ConeJets;1 this can be a friend KEY: TTree ConeJetsEMC;1 this can be a friend KEY: TTree chargedPions;1 this can be a friend KEY: TTree bemcPions;1 this can be a friend root [3] spinTree->AddFriend("ConeJets"); root [4] spinTree->AddFriend("chargedPions"); root [5] spinTree->Draw("chargedPions.fE / ConeJets.fE","chargedPions.fE>0") If you have the class definitions loaded you can also access member functions directly in the interpreter:

root [6] spinTree->Draw("chargedPions.Pt() / ConeJets.Pt()","chargedPions.Pt()>0")

Batch Mode

The StSpinTreeReader class takes care of all the details of setting branch addresses for the various particles behind the scenes.  It also allows you to supply a runlist and a set of triggers you're interested in, and it will only read in the events that you care about.  The code lives in

StRoot/StSpinPool/StSpinTree

and in the macros directory is an example showing how to configure it.  Let's look at the macro step-by-step:

//create a new reader StSpinTreeReader *reader = new StSpinTreeReader(); //add some files to analyze, one at a time or in a text file reader->selectDataset("$STAR/StRoot/StSpinPool/StSpinTree/datasets/run6_rcf.dataset"); //reader->selectFile("./spinAnalyses_6119039.tree.root"); Ok, so we created a new reader and told it we'd be using the files from Run 6 stored on RCF.  You can also give it specfic filenames if you'd prefer, but there's really no reason to do so.

//configure the branches you're interested in (default = true) reader->connectJets = true; reader->connectNeutralJets = false; reader->connectChargedPions = true; reader->connectBemcPions = true; reader->connectEemcPions = false; reader->connectBemcElectrons = false; //optionally filter events by run and trigger //reader->selectRunList("$STAR/StRoot/StSpinPool/StSpinTree/filters/run6_jets.runlist"); reader->selectRun(7143025); //select events that passed hardware OR software trigger for any trigger in list reader->selectTrigger(137221); reader->selectTrigger(137222); reader->selectTrigger(137611); reader->selectTrigger(137622); reader->selectTrigger(5); //we can change the OR to AND by doing reader->requireDidFire = true; reader->requireShouldFire = true; In this block we configured the reader to pick up the jets, chargedPions and BEMC pi0s from the files. We also told it that we only wanted to analyze run 7132001, and that we only cared about events triggered by BJP1, L2jet, or L2gamma in the second longitudinal running period.  Finally, we required that one of those trigIds passed both the hardware and the software triggers.

After that, the reader behaves pretty much like a regular TChain.  The first time you call GetEntries() will be very slow (few minutes for the full dataset) as that's when the reader chains together the files and applies the TEventList with your trigger selection.  Each of the particles is stored in a TClonesArray, and the StJetSkimEvent is accessible via reader->event().

StJetSkimEvent *ev = reader->event(); TClonesArray *jets = reader->jets(); TClonesArray *chargedPions = reader->chargedPions(); TClonesArray *bemcPions = reader->bemcPions(); long entries = reader->GetEntries(); for(int i=0; i

What's Included?

Common trees are produced for both Run 5 and the 2nd longitudinal period of Run 6. Here's what available:

Run 5
  1. skimEvent
  2. ConeJets
  3. chargedPions
  4. bemcPions
Run 6
  1. skimEvent
  2. ConeJets12
  3. ConeJetsEMC
  4. chargedPions -- see (Data Collection)
  5. bemcPions
  6. bemcElectrons

Known Issues

The first time you read a charged pion (batch or interactive) you may see some messages like

Error in <tclass::new>: cannot create object of class StHelix</tclass::new>

These are harmless (somehow related to custom Streamers in the StarClassLibrary) but I haven't yet figured out how to shut them up.

42 runs need to be reprocessed for chargedPions in Run 5.  Will do once Andrew gives the OK at PDSF.

40 runs need to be reprocessed for Run 6 because of MuDst problems.  Murad has also mentioned some problems with missing statistics in the skimEvents and jet trees that we'll revisit at a later date.

Future Plans

Including EEMC pi0s and StGammaCandidates remains on my TO-DO list.  I've also added into StJet a vector of trigger IDs fired by that jet.  Of course we also need to get L2 trigger emulation into the skimEvent.  As always, if you have questions or problems please feel free to contact me.

Cuts Summary

Here's a list of the cuts applied to the data in the common spin trees.

Run 5

Event
  • standard spinDB requirements
  • production triggers only
ConeJets
  • 0.2 < detEta < 0.8
  • 0.1 < E_neu / E_tot < 0.9
chargedPions
  • pt > 2
  • -1 < eta < 1
  • nFitPoints > 25
  • |DCA_global| < 1
  • -1 < nSigmaPion < 2
bemcPions
  • pt > 3.0
  • photon energies > 0.1
  • asymmetry < 0.8
  • 0.08 < mass < 0.25
  • charged track veto
  • BBC timebin in {7,8,9}

Run 6

Event
  • standard spinDB requirements
  • production triggers + trigId 5 (L2gamma early runs)
ConeJets, ConeJetEMC -- no cuts applied

chargedPions
  • pt > 2
  • -1 < eta < 1
  • nFitPoints > 25
  • |DCA_global| < 1
  • -1 < nSigmaPion < 2
bemcPions
  • pt > 5.2
  • photon energies > 0.1
  • asymmetry < 0.8
  • 0.08 < mass < 0.25
  • charged track veto
  • BBC timebin in {7,8,9} update:  timebin 6 added in 2007-07-18 production
  • both SMD planes good
bemcElectrons added as of 2007-07-18 production
  • hardware or software trigger in (117001, 137213, 137221, 5, 137222, 137585, 137611, 137622)
  • Global dE/dx cut changing with momentum
  • nFitPoints >= 15
  • nDedxPoints >= 10
  • nHits / nPoss >= 0.52
  • track Chi2 < 4
  • DCAGlobal < 2
  • NEtaStrips > 1 && NPhiStrips > 1
  • Primary dE/dx cut changing with momentum
  • 0.3 < P/E < 1.5
  • -0.01287 < PhiDist < 0.01345
  • ZDist in [-5.47,1.796] (West) or [-2.706,5.322] (East)

Single-Spin Asymmetries

Here’s a quick summary of various single-spin asymmetry sanity checks (yellow, blue, like-sign, unlike-sign) calculated for both types of charged pions in the Run 6 data.

pi^{-}

Pi Minus elb Fill Pi Minus elb pt Pi Minus els Fill Pi Minus els pt Pi Minus eus Fill Pi Minus eus pt

pi^{+}

pi<em>plus</em>ely<em>fillpi</em>plus<em>ely</em>pt Pi Plus elb FillPi Plus elb pt Pi Plus els Fill Pi Plus els pt Pi Plus eus Fill Pi Plus eus pt Every measurement is absolutely consistent with zero, and I don't see a single problematic fill in this list.

gt test

some text

test->me

more text to go

Strangeness Phone Meeting 2007/5/14

15 May 2007 07:54:37 Attending: Matt, Helen, Jun, Marcelo, Marek, Ant, Lee, Christine, Betty, Sevil Time        Talk       

Checklist for Run 6 preliminary result

  1. QA for BJP0 trigger and runlist generation
  2. Confirm vertex and nSigma cuts with systematic studies
  3. Run over new PYTHIA simulation, make basic data/simu comparisons
  4. Trigger Bias studies
  5. Extract A_TT from transverse data
  6. Randomized spin pattern studies
  7. PID background estimation

Notes

  • Adding the L2gamma trigger would improve statistics but we don't have an officially sanctioned simulation of that trigger available yet.
  • This checklist assumes the preliminary result is an inclusive measurement using only Run 6 data; other possibilities are to combine Runs 5 and 6 or to pursue the jet+pion measurement.

Effect of Triggers on Relative Subprocess Contributions

These histograms plot the fraction of reconstructed charged pions in each pion pT bin arising from gg, qg, and qq scattering.  I use the following cuts:

  • fabs(mcVertexZ()) < 60
  • fabs(vertexZ()) < 60
  • geantId() == 8 or 9 (charged pions)
  • fabs(etaPr()) < 1
  • fabs(dcaGl()) < 1
  • fitPts() > 25

I analyzed Pythia samples from the P05ih production in partonic pT bins 3_4 through 55_65 (excluded minbias and 2_3).  The samples were weighted according to partonic x-sections and numbers of events seen and then combined.  StEmcTriggerMaker provided simulations of the HT1 (96201), HT2 (96211), JP1 (96221), and JP2 (96233) triggers.  Here are the results.  The solid lines are MB and are identical in each plot, while the dashed lines are the yields from events passing a particular software trigger.  Each image is linked to a full-resolution copy:

HT1HT2
JP1JP2

Conclusions

  1. Imposing an EMC trigger suppresses gg events and enhances qq, particularly for transverse momenta < 6 GeV/c.  The effect on qg events changes with pT.  The explanation is that the ratio (pion pT / partonic pT) is lower for EMC triggered events than for minimum bias.
  2. High threshold triggers change the subprocess composition more than low-threshold triggers.
  3. JP1 is the least-biased trigger according to this metric.  There aren't many JP1 triggers in the real data, though, as it was typically prescaled by ~30 during the 2005 pp run.  Most of the stats in the real data are in JP2.

Average Partonic Pt Carried by Charged Pions

Here's a fragmentation study looking at the ratio of reconstructed charged pion p_{T} and the event partonic p_{T} in PYTHIA.  Cuts are

  • fabs(mcVertexZ()) < 60
  • fabs(vertexZ()) < 60
  • geantId() == 8 or 9 (charged pions)
  • fabs(etaPr()) < 1
  • fabs(dcaGl()) < 1
  • fitPts() > 25

fragmentation_parton_reco

Error bars are just the errors on the mean partonic p_{T} in each reconstructed pion p_{T} bin.  Next step is to look at the jet simulations to come up with a plot that is more directly comparable to a real data measurement.