Athena-Atlfast





Contacts:
Jon Couchman
Peter Sherwood

Association Manager

Header file:     IAssociationManager.h
Package:         AtlfastEvent

In Atlfast, objects can have related objects - for example, Clusters can have related objects.
The  necessary condition  to both being able to have related objects, and being able to be associated
with another object is to inherit from the interface class IAssociationManager.

 At present the following classes inherit from IAssociationManager:
 

  • ReconstructedParticle
  • Cell
  • TwoCptCell
  • Cluster
  • Track
  • Jet
  • SimpleKinematic
  • IKinematic
IAssociationManager can return associations as concrete types, or as IKinematics

for example, to ask clusters for its cells,

Cluster* cluster (......) //construct a cluster  - construction args not given here
AssociationManager iam = cluster;
Cell cell;
std::vector<const Cell*> vectorOfCells = iam->associations(cell);

To associate a track with the same cluster:
Track*  track = new Track(....)
iam->add(track);

AssocTypeRecoverer

(Check Doxygen documentation or code for up to date
  method names)

Header file:         AssocTypeRecoverer.h
Package:             AtlfastAlgs

AssocTypeRecoverer allows you to revover ALL associations for  EVERY object in a vector:

std::vector::<Cluster*> clusters;
Cluster* c1;                                                   // you have some clusters
clusters.push_back(c1);                              //  put them in a vector
AssocTypeRecoverer<Cluster> atr(clusters);
// to get all associations that can be IKinematics as IKineamtics...
std::vector<IKinematic*>  iks = atr.vectorOfKinematics();

 to get cells:

std::vector<ICell*> cells = atr.cell();