Re: [BLAST_SHIFTS] how do i get access to the WC hits corresponding to tracks?

From: Tong-Uk Lee (tong@mitlns.mit.edu)
Date: Sat Jun 21 2003 - 09:09:33 EDT


Tong-Uk Lee wrote:

> Chris Crawford wrote:
>
>> hi aaron,
>> unfortunately with stl, there is no easy way to write a root script
>> to do this, but you will find a couple of examples in BlastLib2 (v2):
>> wc_bnd.cc looks at hits in a stub which crosses between two cells,
>> and wc_hit.cc looks at to coincidence hits in two adjacent cells,
>> same layers. to use them: 'make wc_bnd wc_hit; wc_bnd 3070' it
>> will produce a root ntuple file bnd-3070.root, which you can analyze
>> using normal methods.
>> hopefully you can modify this script for your own purpose. you may
>> want to talk with eugene, who has been working with these.
>> --chris
>>
>> Aaron Joseph Maschinot wrote:
>>
>>> i'm trying to do a WC efficiency study. to do so, i need to have
>>> access
>>> to the list of hits corresponding to each track that successfully gets
>>> reconstructed (i also need the list of corresponding keys for each
>>> of the
>>> hits). does anyone know how to access these values? i'm pretty
>>> sure it
>>> should be done through the TBLTrack class somehow.
>>>
>>> aaron
>>>
>>>
>>>
>>
> Hi,
>
> TBLWc1HitContainer fills the following variable to ntuple.
> If you need, you can add more variables to the ntuple if you want.
>
> void TBLWc1HitContainer::operator<<(TBLWc1Histogram &hist) {
> for (multimap<const Key, TBLWc1Hit>::iterator it = begin();
> it != end(); ++it) {
> int la = layer((*it).first); //decode key to obtain layer
> int ce = cell((*it).first); //decode key to obtain cell
> int su = superlayer((*it).first); //decode key to obtain superlayer
> int ch = chamber((*it).first); //decode key to obtain chamber
> int se = sector((*it).first); //decode key to obtain sector
> int tdc = (*it).second.gettdc(); //get tdc
> float time =(*it).second.gettime(); //get time
> float dist = (*it).second.getdistancep(); //get unsigned distance
> hist.h1[0]->Fill(tdc); // Fill 1 d histogram
> hist.h1[1]->Fill(time); // Fill next 1 d histogram
> hist.h1[2]->Fill(dist); // Fill next 1 d histogram
> hist.nt->Fill(se,ch,su,la,ce,tdc,time,dist); // Fill ntuple
> }
> }
>
> -T

Oh, your script should look something like this

TNtuple *ntuple = new TNtuple("ntuple","s c u l w tdc t d",
                              "s:c:u:l:w:tdc:t:d");
TBLWc1Histogram h_4_hit;
h_4_hit.h1[0]=h100; // 1d histogram
h_4_hit.h1[1]=h200; // 1d histogram
h_4_hit.h1[2]=h300; // 1d histogram
h_4_hit.nt = ntuple; // ntuple
....
while (event.ReadNext() == 0){ // Read Events till the end of the file.
....
hitinfo2 << h_4_hit;
....
}



This archive was generated by hypermail 2.1.2 : Mon Feb 24 2014 - 14:07:29 EST