Print

Print


Yes, I can get it by sorting through the list of hits and picking the
highest energy hit. I can't get the x/y crystal index though. Trying to
causes an error pertaining to an IDDecoder class.

Thanks,

Kyle
On Jun 21, 2014 4:30 PM, "McCormick, Jeremy I." <[log in to unmask]>
wrote:

> Isn't the seed hit just the one with the most energy anyways?
>
> On Jun 21, 2014, at 12:49 PM, "McCormick, Jeremy I." <
> [log in to unmask]> wrote:
>
> Yes you have it right.  You need to talk to Sho and the calorimeter group
> about this.  The proper way to do this is an LCRelation object to link the
> seed hit to the cluster.  Extending Cluster was a bad design choice and
> should be fixed I guess.
>
> On Jun 21, 2014, at 12:33 PM, "Kyle McCarty" <[log in to unmask]> wrote:
>
> I figured out how to make an output driver, but it seems I misunderstood
> what you were trying to tell me before. I guess the entire LCIO framework
> is only able to handle the writing SIOCluster objects, in addition to not
> being able to access the HPS classes. I assume that the LCIOWriter has
> either been given specific instructions on how to write the base LCIO
> classes or the base LCIO classes have a method to give the writer their
> output format for it to write. (This makes sense in hindsight; the way I
> had been thinking it worked would be dramatically more complicated.)
>
> Looking more at the objects, it seems an HPSEcalCluster is basically just
> a BaseCluster that stores a seed hit and a cell ID. A seed hit is just a
> CalorimeterHit. Both of these are part of the LCIO package, but as I don't
> have the source code, I can't tell if they are part of our modified LCIO or
> if they are implementations of the base classes. How hard would it be to
> generated HPSEcalCluster objects from SIOClusters? I assume that it is easy
> to do with CalorimeterHit objects from their respective base object, since
> I didn't experience any errors when treating them as the same thing.
>
> If this is not possible (or feasible), I need to be able to access the
> cluster energy, the seed hit, and the x/y crystal indices. SIOCluster has
> cluster energy, so that isn't a problem. SIOCluster appears to store the
> cluster component hits, so I should be able to extract the seed hit. As it
> is always the highest energy hit in the cluster, it should just be a matter
> of looping over the hits and pulling out the one with most energy. The one
> I'm really not sure about, though, is the x/y crystal indices. I think that
> these are specific to HPS, so there is presumably no analogous parameter in
> the base hit class and I would need to map the hit absolute position
> parameters to a crystal index. I'm not sure how to actually do this, though.
>
> Thanks,
>
> Kyle
>
>
> On Sat, Jun 21, 2014 at 3:12 PM, McCormick, Jeremy I. <
> [log in to unmask]> wrote:
>
>> What info do you need from the HPS cluster class that is not in the
>> standard API?
>>
>> On Jun 21, 2014, at 10:22 AM, "Kyle McCarty" <[log in to unmask]> wrote:
>>
>> Thanks for the reply. Is the source code available somewhere? I could
>> just pull a copy into an HPS package for my local version so it could
>> recognize the class. Alternatively, I could potentially make a new driver
>> for HPS if I knew how it worked.
>>
>> Thanks,
>>
>> Kyle
>> On Jun 21, 2014 12:19 PM, "McCormick, Jeremy I." <
>> [log in to unmask]> wrote:
>>
>>> LCIO only knows about its base types and can't load back extended
>>> classes with extra information (e.g. class variables).
>>>
>>> This is a reason to use the "generic object" functionality rather than a
>>> custom class. Or we can request a new addition to the IO format but we have
>>> not been good about this.
>>>
>>> You can however still get at those objects from Cluster.class using
>>> get().  They won't have any of the extra information.
>>>
>>> I guess you need to talk to the author of the custom cluster class to
>>> see what can be done about this,
>>>
>>> > On Jun 21, 2014, at 12:55 AM, "Kyle McCarty" <[log in to unmask]> wrote:
>>> >
>>> > Hello Jeremy,
>>> >
>>> > I'm getting a strange error. I created a file for spaced A' events and
>>> ran reconstruction over it, outputting the results to a new SLCIO file.
>>> Since the input file was spaced heavily, I know that all clusters and FADC
>>> hits that occur in the empty events between those containing raw
>>> calorimeter hits came from the last event which has the raw calorimeter
>>> hits. To both reduce the file size and make analyzing them easier, I wrote
>>> a script that goes through and grabs the FADC hits and clusters and adds
>>> them to the source event. However, I found that the method
>>> >
>>> > event.hasCollection(HPSEcalCluster.class, COLLECTION_CLUSTERS)
>>> >
>>> > always comes up false. I have examined the input file in JAS3 and
>>> there is in fact a collection with the given name (String
>>> COLLECTION_CLUSTERS = "EcalClusters") containing clusters in several
>>> events. Additionally, these clusters are created with an unmodified version
>>> of the GTP clusterer driver which Sho and I wrote, so I know that they are
>>> output as class HPSEcalCluster.
>>> >
>>> > I did some more research and, calling the method
>>> >
>>> > event.getLists()
>>> >
>>> > I was able to obtain all the collections stored in the event. Getting
>>> the first element from the lists and outputting its class name gives, among
>>> others, a collection of type "SIOCluster." These only appear in the events
>>> that contain clusters and are acquired when I call
>>> >
>>> > event.get(HPSEcalCluster.class, COLLECTION_CLUSTERS)
>>> >
>>> > without error. However, attempting to manipulate the objects from the
>>> resultant list causes a ClassCastException, saying that an SIOCluster can
>>> not be case to an HPSEcalCluster. This is clearly the cluster collection,
>>> and was originally created as an HPSEcalCluster collection.
>>> >
>>> > My theory is that the clusters are HPSEcalClusters objects originally,
>>> but are being saved as SIOClusters (which seems to be missing some
>>> parameters such as seed hit) by the LCIO save driver. This is supported by
>>> the fact that the trigger driver, if added to the reconstruction chain,
>>> does not have any errors despite explicitly calling HPSEcalCluster methods
>>> like getSeedHit() that do not exist in SIOCluster. The script, however,
>>> uses the saved output rather than LCSim's internal memory so it gets the
>>> reduced version.
>>> >
>>> > I'm not sure what the correct course of action for resolving this is.
>>> Is there a better version of the LCIO write driver that can handle
>>> HPSEcalCluster objects? I can't find the driver in the source files
>>> anywhere, so I assume it is part of the LCSim project that is presumably
>>> pulled in (precompiled?) by Maven, so I can't just change the driver.
>>> >
>>> > To make it easier to check my theory or test the problem, I have
>>> attached the steering file and input data file I have been using along with
>>> the script.
>>> >
>>> > Thanks,
>>> >
>>> > Kyle
>>> > <ClusterProcessing.lcsim>
>>> > <cluster-100mev-window1.slcio>
>>> > <EventUnifier.java>
>>>
>>
>
> ------------------------------
>
> Use REPLY-ALL to reply to list
>
> To unsubscribe from the HPS-SOFTWARE list, click the following link:
> https://listserv.slac.stanford.edu/cgi-bin/wa?SUBED1=HPS-SOFTWARE&A=1
>
>

########################################################################
Use REPLY-ALL to reply to list

To unsubscribe from the HPS-SOFTWARE list, click the following link:
https://listserv.slac.stanford.edu/cgi-bin/wa?SUBED1=HPS-SOFTWARE&A=1