Back to index

See source file

CMCGeantTrack.h

 
//----------------------------------------------------------------------------- 
//  $Header: /cool/project/RCS/CMCGeantTrack.h,v 2.4 1997/03/17 14:16:18 ceretto Exp $ 
// 
//  COOL Program Library   
//  Copyright (C) CERES collaboration, 1996 
// 
//  Declaration of class CMCGeantTrack. 
// 
//  this class needs operator == () well defined for use in RWTPtrOrderedVector<T> 
// 
// content of this class: 
// int     trackNr     	for primary particles: GEANT track number          
// 	    	       	for secondaries: GEANT track number of             
// 	    	       	parent of particle, if from stack:                 
// 	    	       	ITRAK+10000*ISTAK                                  
// int     parent      	for primary particle: HIJET parent track #         
// 	    	       	special: 1: beam delta rays in target              
// 	 	       		 2: additional MC electron                 
// 	    	       	for secondaries: GEANT id of parent                
// CString volume[4]   	primaries: '    '                                  
// 	    	       	secondaries: GEANT volume name at creation         
// CString process[4]  	primaries: 'prim', except for                      
// 				   'pDAL'  pi-DALITZ electron              
// 				   'eDAL'  eta-DALITZ                      
// 				   'eepr'  ee-pair from resonances         
// 				   'ADDe'  additional MC electron          
// 	    	       	condaries: GEANT creation process name           
// 	    	        e.g.  'PAIR','HADR',...                            
// CMCParticle particle particle (id + 4Momentum)  
// int    nHitsUV1      number of hits in UV1 from this particle           
// int    nHitsUV2      dito UV2                                           
// C3Momentum  origin   origin (x,y,z) of track 
// 
//----------------------------------------------------------------------------- 
#ifndef CMCGEANTTRACK_H 
#define CMCGEANTTRACK_H 
 
#include <iostream.h> 
#include <math.h> 
 
#include "cool.h"  
#include "CMCcool.h"  
#include "CMCDigiHit.h"  
#include "CMCParticle.h"  
#include "C4Momentum.h"  
#include "CCoordinate.h"  
#include "CDetector.h"  
 
#include "rw/tpordvec.h" 
 
class CRich; 
class CRingCandidate; 
 
class CMCGeantTrack {  
 
public:  
  CMCGeantTrack();  
  ~CMCGeantTrack();  
 
protected:  
  CMCGeantTrack(const CMCGeantTrack &);  
  CMCGeantTrack & operator = (const CMCGeantTrack &);  
 
public:  
  inline void setIndex    (int         ind)   { index    = ind; } 
  inline void setTrackNr  (int         trk)   { trackNr  = trk; } 
  inline void setParent   (int         par)   { parent   = par; } 
  inline void setVolume   (CString     vol)   { volume   = vol; } 
  inline void setProcess  (CString     prc)   { process  = prc; } 
  inline void setParticle (CMCParticle aPart) { particle = aPart; } 
  inline void setOrigin   (C3Momentum  aOrig) { origin   = aOrig; } 
  inline void setNHitsUV1 (int         nh1)   { nHitsUV1 = nh1; } 
  inline void setNHitsUV2 (int         nh2)   { nHitsUV2 = nh2; } 
 
  inline int   getIndex    () const { return index   ; } 
  inline int   getTrackNr  () const { return trackNr ; } 
  inline int   getParent   () const { return parent  ; } 
  inline int   getNHitsUV1 () const { return nHitsUV1; } 
  inline int   getNHitsUV2 () const { return nHitsUV2; } 
  inline const CString& getVolume   () const { return volume  ; } 
  inline const CString& getProcess  () const { return process ; } 
 
  inline CMCParticle& getParticle () { return particle; } 
  inline C3Momentum   getOrigin   () { return origin; } 
 
public:  
  inline void  addMCDigiHit(CDetector::CDetectorId, CMCDigiHit*);	 // add pointer to its list 
  inline const RWTPtrOrderedVector<CMCDigiHit>*  getDigiHits(int detId) const { return &digiHits[detId]; } 
 
  void   print(ostream& = cout); 
  inline CBoolean operator== (const CMCGeantTrack&) const;	 // needed for collection list 
 
public:  
  CRichPadCoord fitRingOnGeantHits(CRich&); 
  CRichPadCoord fitRingOnDigiHits (CRich&); 
  CRingCandidate fitPionRingOnGeantHits(CRich&); 
  CRingCandidate fitPionRingOnDigiHits (CRich&); 
 
protected:  
  int     index   ;  		// for operator == 
  int     trackNr ;   
  int     parent  ;    
  CString volume  ;    
  CString process ;   
 
  CMCParticle particle ;   
 
  int     nHitsUV1;  
  int     nHitsUV2;  
 
  C3Momentum origin; 
 
  RWTPtrOrderedVector<CMCDigiHit>  digiHits[MaxDetectors];		 // MC hits as 'made' by the detectors 
 
};  
 
// ---------------------------------- inline member functions ------------------------------ 
 
inline void CMCGeantTrack::addMCDigiHit(CDetector::CDetectorId id, CMCDigiHit * hit)  
{  
  if (id >= 0 && id < MaxDetectors)  
    digiHits[id].insert(hit);  
} 
 
CBoolean    CMCGeantTrack::operator == (const CMCGeantTrack& part) const { return (index == part.index); } 
 
#endif /* CMCGEANTTRACK_H */  

Back to index

See source file