TTree as a database

From: William J Deninger (deninger@uiuc.edu)
Date: Sun Apr 12 1998 - 02:53:08 MEST


Hello,

I understand that the only way to expand an existing TTree database is by adding additional.  However, how would one add data to a TTree which is relevant to a specific data item of a TObjArray (on an existing branch) and maintain a data hiarchial organization? 

An example: When dealing with particle tracking drift chambers, one begins with a set of drift times for each sense wire in a given particle track event.  These drift times are stored in a drift structure which is listed in a TObjArray.  

Data stored in first branch (called raw) during first pass of data: 
class TRawData
{ 
    Int_t run number,
     Int_t fill number,
     ...
    TClonesArray *wires; // wires("TMpxEvent")
}
with 
class TMpxEvent
{
Int _t index;
Int_t time;
T3DPoint p1;
T3DPoint p2;
...
}

Once this database of particle track events is create, drift spectrums are created using the entire data set which map sense wire drift times to distances. Now, how would I incorporate this  sense wire distance information into the TTree such that I can reference it relative to each of the sense wire drift structures?

Following first pass, I can do
tree->Draw("wires.time"); // works great.

Following the second pass over data, I would like to do the following:
tree->Draw("wires.distance","time = xxx && index = xxx");

I understand this can be accomplished by moving all the sense wire data (TMpxEvent) directly onto the branch and performing a tree->Fill() for each wire, but that would require run_number, fill_number... etc in TRawData be written up to 50 times more often than necessary in the TFile.

William J Deninger



This archive was generated by hypermail 2b29 : Tue Jan 04 2000 - 00:34:32 MET