30 class HLinkedDataObject;
32 class HLinearCategory;
86 void setTrack(Int_t aTrack) { trackNumber = aTrack;}
87 void setParticle(Int_t aTrack, Int_t aID);
88 void setCreator(Int_t aPar, Int_t aMed, Int_t aMech);
89 void setVertex(Float_t ax, Float_t ay, Float_t az);
90 void setMomentum(Float_t apx, Float_t apy, Float_t apz);
91 void setGenerator(Float_t aInfo, Float_t aWeight);
92 void setGenerator(Float_t aInfo, Float_t aInfo1, Float_t aInfo2);
93 void setWeight(Float_t aWeight) {generatorWeight = aWeight;}
94 void getParticle(Int_t &aTrack, Int_t &aID);
95 void getCreator(Int_t &aPar, Int_t &aMed, Int_t &aMech);
96 void setID(Int_t aID) { particleID = aID; }
100 void getVertex(Float_t &ax, Float_t &ay, Float_t &az);
102 Float_t getDistFromVertex();
103 void getMomentum(Float_t &apx, Float_t &apy, Float_t &apz);
104 inline Int_t
getTrack(
void)
const {
return trackNumber; }
107 inline Int_t
getID(
void)
const {
return particleID; }
110 void setNewTrackNumber(Int_t
track);
115 Float_t getPhiDeg (Bool_t labSys = kTRUE);
116 Float_t getThetaDeg();
117 Int_t getPhiThetaDeg(Float_t&
theta,Float_t&
phi, Bool_t labSys = kTRUE);
120 Float_t
getE(
void)
const {
return TMath::Sqrt(getM()*getM() + getTotalMomentum2());}
121 Float_t
getEkin(
void)
const {
return getE()-getM();}
122 Float_t
getRapidity(
void)
const{
return 0.5*TMath::Log((getE()+zMom)/(getE()-zMom));}
125 void getGenerator(Float_t &aInfo, Float_t &aWeight);
126 void getGenerator(Float_t &aInfo, Float_t &aInfo1, Float_t &aInfo2);
132 static Int_t getMothers(
HGeantKine*, vector<HGeantKine*>& mothers);
133 static Int_t getAllDaughters(
HGeantKine* mother,vector<HGeantKine*>& daughters);
134 static Int_t getDaughters(
HGeantKine* mother,vector<HGeantKine*>& daughters);
140 inline Bool_t
isActive(
void)
const {
return active;}
141 inline Bool_t
isPrimary(
void)
const {
return (parentTrack==0);}
144 Bool_t hasAncestor(Int_t
track, HLinearCategory* cat=NULL);
152 Bool_t isExternalSource() ;
153 Bool_t isThermalSource() ;
155 Bool_t isSameExternalSource(
HGeantKine* kine1);
159 static Bool_t setChainActive(Int_t
track, Bool_t flag=kTRUE, HLinearCategory* cat=NULL);
160 static Bool_t setAllDescendentsActive(Int_t
track, Bool_t flag=kTRUE, HLinearCategory* cat=NULL);
161 static Bool_t setAllDescendentsSuppressed(Int_t
track, Bool_t flag=kTRUE, HLinearCategory* cat=NULL);
163 static HGeantKine* getGrandParent(Int_t
track, HLinearCategory* cat=NULL);
165 static HGeantKine* getCommonAncestor(Int_t track1, Int_t track2, HLinearCategory* cat=NULL);
166 static Bool_t suppressTracks(Int_t
id, Float_t acceptedFraction, HLinearCategory* cat=NULL);
168 inline Int_t setRichHitIndex(Int_t index);
169 inline Int_t setMdcHitIndex(Int_t index);
170 inline Int_t setTofHitIndex(Int_t index);
171 inline Int_t setRpcHitIndex(Int_t index);
172 inline Int_t setShowerHitIndex(Int_t index);
173 inline Int_t setWallHitIndex(Int_t index);
174 inline Int_t setEmcHitIndex(Int_t index);
175 inline Int_t setStartHitIndex(Int_t index);
177 Int_t getNRichHits(
void);
179 Int_t getNMdcHits(
void);
181 Int_t getNMdcHits(Int_t module);
182 Int_t getNTofHits(
void);
184 Int_t getNRpcHits(
void);
186 Int_t getNShowerHits(
void);
188 Int_t getNWallHits(
void);
190 Int_t getNEmcHits(
void);
192 Int_t getNStartHits(
void);
195 Int_t getRichHits (vector<HGeantRichPhoton*>& v);
196 Int_t getMdcHits (vector<HGeantMdc*>& v);
197 Int_t getTofHits (vector<HGeantTof*>& v);
198 Int_t getRpcHits (vector<HGeantRpc*>& v);
199 Int_t getWallHits (vector<HGeantWall*>& v);
200 Int_t getEmcHits (vector<HGeantEmc*>& v);
201 Int_t getStartHits(vector<HGeantStart*>& v);
213 void sortRichHits(
void);
214 void sortMdcHits(
void);
215 void sortTofHits(
void);
216 void sortRpcHits(
void);
217 void sortShowerHits(
void);
218 void sortWallHits(
void);
220 Bool_t isInAcceptance (Int_t m0=4,Int_t
m1=4,Int_t
m2=4,Int_t
m3=4,Int_t sys0=1,Int_t sys1=1);
221 Bool_t isInAcceptanceDecay(Int_t m0,Int_t
m1,Int_t
m2,Int_t
m3,Int_t sys0,Int_t sys1);
222 Bool_t isInAcceptanceBit (Int_t m0=4,Int_t
m1=4,Int_t
m2=4,Int_t
m3=4,Int_t sys0=1,Int_t sys1=1);
223 Bool_t isInAcceptanceDecayBit(Int_t m0,Int_t
m1,Int_t
m2,Int_t
m3,Int_t sys0,Int_t sys1);
224 void getNHits (Int_t& m0,Int_t&
m1,Int_t&
m2,Int_t&
m3,Int_t& sys0,Int_t& sys1);
225 void getNHitsDecay (Int_t& m0,Int_t&
m1,Int_t&
m2,Int_t&
m3,Int_t& sys0,Int_t& sys1);
226 void getNHitsBit (Int_t& m0,Int_t&
m1,Int_t&
m2,Int_t&
m3,Int_t& sys0,Int_t& sys1);
227 void getNHitsDecayBit(Int_t& m0,Int_t&
m1,Int_t&
m2,Int_t&
m3,Int_t& sys0,Int_t& sys1);
228 Int_t getSystem(
void);
229 Int_t getSectorFromBitArray(
void);
230 UInt_t getMdcSectorBitArray(
void);
231 UInt_t getMdcSectorDecimalArray(
void);
232 UInt_t getShowerSectorBitArray(
void);
233 UInt_t getShowerSectorDecimalArray(
void);
234 UInt_t getTofSectorBitArray(
void);
235 UInt_t getTofSectorDecimalArray(
void);
236 UInt_t getRpcSectorBitArray(
void);
237 UInt_t getRpcSectorDecimalArray(
void);
238 UInt_t getRichSectorBitArray(
void);
239 UInt_t getRichSectorDecimalArray(
void);
240 UInt_t getSectorBitArray(
void);
241 UInt_t getSectorDecimalArray(
void);
243 inline HLinkedDataObject* nextRichHit();
244 inline HLinkedDataObject* nextMdcHit();
245 inline HLinkedDataObject* nextTofHit();
246 inline HLinkedDataObject* nextRpcHit();
247 inline HLinkedDataObject* nextShowerHit();
248 inline HLinkedDataObject* nextWallHit();
249 inline HLinkedDataObject* nextEmcHit();
250 inline HLinkedDataObject* nextStartHit();
263 inline void resetRichIter(
void);
264 inline void resetMdcIter(
void);
265 inline void resetTofIter(
void);
266 inline void resetRpcIter(
void);
267 inline void resetShowerIter(
void);
268 inline void resetWallIter(
void);
269 inline void resetEmcIter(
void);
270 inline void resetStartIter(
void);
275 void setLayers(UInt_t io,UInt_t layers) { acceptance|=(layers&(0xFFF<<(io*12)));}
276 void setLayer (UInt_t io,UInt_t lay) { acceptance |= ( 0x01 << (io*12+lay) ); }
278 static void setLayer(UInt_t io,UInt_t lay,UInt_t& layers) { layers |= ( 0x01 << (io*12+lay) ); }
279 Bool_t
getLayer (UInt_t io,UInt_t lay) {
return ( acceptance & ( 0x01 << (io*12+lay) )); }
280 Bool_t
hasLayers (UInt_t io,UInt_t layerstest) {
return (((acceptance>>(io*12))&0xFFF)==((layerstest>>(io*12))&0xFFF));}
281 Int_t getNLayer (UInt_t io);
282 Int_t getNLayerMod(UInt_t mod);
284 void setSys (UInt_t sys) { acceptance |= ( 0x01 << (24+sys) ); }
285 void unsetSys(UInt_t sys) { acceptance &= ~( 0x01 << (24+sys) ); }
286 Bool_t
getSys (UInt_t sys) {
return ( acceptance & ( 0x01 << (24+sys) )); }
288 void setAtMdcEdge (UInt_t i) {
if(i<4) { acceptance|=((0x1)<<(i+26)); } }
290 Bool_t
isAtMdcEdge (UInt_t i) {
if(i<4) {
return ( acceptance & ( 0x01 << (26+i) ));}
else return kFALSE; }
294 if( acceptance & ( 0x01 << (26+0) ))
return kTRUE;
295 if( acceptance & ( 0x01 << (26+1) ))
return kTRUE;
298 if( acceptance & ( 0x01 << (26+2) ))
return kTRUE;
299 if( acceptance & ( 0x01 << (26+3) ))
return kTRUE;
302 }
else return kFALSE;
311 void fillAcceptanceBit();
318 Int_t setHitIndex(HCategory* p, Short_t& first, Int_t index);
319 HLinkedDataObject* nextHit(HCategory* p, Int_t& next);
329 return setHitIndex(pRich,firstRichHit,index);
335 return setHitIndex(pMdc,firstMdcHit,index);
341 return setHitIndex(pTof,firstTofHit,index);
347 return setHitIndex(pRpc,firstRpcHit,index);
353 return setHitIndex(pShow, firstShowerHit,index);
359 return setHitIndex(pWall, firstWallHit,index);
365 return setHitIndex(pEmc,firstEmcHit,index);
371 return setHitIndex(pStart,firstStartHit,index);
377 return nextHit(pRich,richIndex);
382 return nextHit(pMdc,mdcIndex);
387 return nextHit(pTof,tofIndex);
392 return nextHit(pRpc,rpcIndex);
397 return nextHit(pShow,showIndex);
402 return nextHit(pWall,wallIndex);
407 return nextHit(pEmc,emcIndex);
412 return nextHit(pStart,startIndex);
417 richIndex = (Int_t)firstRichHit;
422 mdcIndex = (Int_t)firstMdcHit;
427 tofIndex = (Int_t)firstTofHit;
433 rpcIndex = (Int_t)firstRpcHit;
439 showIndex = (Int_t)firstShowerHit;
445 wallIndex = (Int_t)firstWallHit;
451 emcIndex = (Int_t)firstEmcHit;
457 startIndex = (Int_t)firstStartHit;
HLinkedDataObject * nextWallHit()
Float_t getTotalMomentum(void) const
HCategory * pRpc
of hit objects
const Cat_t catStartGeantRaw
Bool_t getSys(UInt_t sys)
Int_t setStartHitIndex(Int_t index)
void setSuppressed(Bool_t flag=kTRUE)
void getMomentum(HGeomVector &v)
void setAtMdcEdge(UInt_t i)
void setWallCategory(HCategory *p)
void setLayer(UInt_t io, UInt_t lay)
const Cat_t catMdcGeantRaw
void setFirstRichHit(Int_t index)
HEvent *& getCurrentEvent(void)
Int_t mdcIndex
internal index variables
Int_t getGeneratorInfo() const
Int_t tofIndex
used to set up linked chains
void setFirstWallHit(Int_t index)
Bool_t isAtAnyMdcEdge(UInt_t io=2)
void setFirstTofHit(Int_t index)
Int_t getGeneratorInfo2() const
void unsetSys(UInt_t sys)
void setActive(Bool_t flag=kTRUE)
Bool_t isAtMdcEdge(UInt_t i)
void setWeight(Float_t aWeight)
void setMedium(Int_t aMed)
Int_t setShowerHitIndex(Int_t index)
void setMechanism(Int_t aMech)
Int_t setTofHitIndex(Int_t index)
Float_t getTransverseMomentum(void) const
void setFirstMdcHit(Int_t index)
Int_t getParentTrack(void) const
Float_t getUserVal(void) const
void setRpcCategory(HCategory *p)
Int_t setRpcHitIndex(Int_t index)
Float_t getGeneratorWeight() const
Bool_t isSuppressed(void) const
HLinkedDataObject * nextStartHit()
void setUserVal(Float_t val)
void setXYZ(const Double_t xx, const Double_t yy, const Double_t zz)
static Float_t mass(const Int_t id)
HLinkedDataObject * nextShowerHit()
const Cat_t catRpcGeantRaw
Int_t rpcIndex
of hit objects
HLinkedDataObject * nextRpcHit()
void setParentTrack(Int_t track)
Bool_t isPrimary(void) const
Bool_t isActive(void) const
Float_t getTotalMomentum2(void) const
static void setLayer(UInt_t io, UInt_t lay, UInt_t &layers)
HCategory * pTof
used to set up linked chains
const Cat_t catRichGeantRaw
const Cat_t catEmcGeantRaw
void resetStartIter(void)
void setFirstShowerHit(Int_t index)
Int_t getGeneratorInfo1() const
Bool_t hasLayers(UInt_t io, UInt_t layerstest)
Int_t setRichHitIndex(Int_t index)
void unsetAtMdcEdge(UInt_t i)
HLinkedDataObject * nextRichHit()
Int_t getFirstShowerHit()
const Cat_t catWallGeantRaw
Float_t getRapidity(void) const
Float_t getEkin(void) const
HLinkedDataObject * nextMdcHit()
HLinkedDataObject * nextTofHit()
void unsetAcceptanceFilled()
Bool_t getLayer(UInt_t io, UInt_t lay)
HLinkedDataObject * nextEmcHit()
void resetShowerIter(void)
Int_t setWallHitIndex(Int_t index)
void setTofCategory(HCategory *p)
void setEmcCategory(HCategory *p)
Int_t getMechanism() const
void setFirstStartHit(Int_t index)
const Cat_t catTofGeantRaw
void setMdcCategory(HCategory *p)
Int_t setEmcHitIndex(Int_t index)
Int_t getTrack(void) const
void setAcceptanceFilled()
void setRichCategory(HCategory *p)
void setFirstEmcHit(Int_t index)
const Cat_t catShowerGeantRaw
void setShowerCategory(HCategory *p)
void setStartCategory(HCategory *p)
Int_t setMdcHitIndex(Int_t index)
void setFirstRpcHit(Int_t index)
void setTrack(Int_t aTrack)
Bool_t isAcceptanceFilled()
void setLayers(UInt_t io, UInt_t layers)
HCategory * pMdc
internal pointers to category