KaliVeda
Toolkit for HIC analysis
Loading...
Searching...
No Matches
KVASMultiDetArray.h
1/***************************************************************************
2 KVMultiDetArray.h - description
3 -------------------
4 begin : Thu May 16 2002
5 copyright : (C) 2002 by J.D. Frankland
6 email : frankland@ganil.fr
7
8$Id: KVMultiDetArray.h,v 1.55 2009/03/03 14:27:15 franklan Exp $
9 ***************************************************************************/
10
11/***************************************************************************
12 * *
13 * This program is free software; you can redistribute it and/or modify *
14 * it under the terms of the GNU General Public License as published by *
15 * the Free Software Foundation; either version 2 of the License, or *
16 * (at your option) any later version. *
17 * *
18 ***************************************************************************/
19
20#ifndef KVASMultiDetArray_H
21#define KVASMultiDetArray_H
22
23#include "KVMultiDetArray.h"
24#include "KVLayer.h"
25#include "KVRing.h"
26class KVASGroup;
27
35
36protected:
39
40 virtual void AddToGroups(KVTelescope* kt1, KVTelescope* kt2);
41 void SetGroups(KVLayer*, KVLayer*);
42 void UpdateGroupsInRings(KVRing* r1, KVRing* r2);
44 virtual void MergeGroups(KVASGroup* kg1, KVASGroup* kg2);
46 void GetIDTelescopesForGroup(KVGroup* grp, TCollection* tel_list);
49public:
51 virtual ~ KVASMultiDetArray();
52 void init();
53 virtual KVGroup* GetGroupWithAngles(Float_t theta, Float_t phi);
56 {
65 return (IsROOTGeometry() ? DetectParticle_TGEO(part) : DetectParticle_KV(part));
66 };
67
69 KVLayer* GetLayer(const Char_t* name) const
70 {
72 return (KVLayer*)GetStructure("LAYER", name);
73 }
75 {
77 return (KVLayer*)GetStructure("LAYER", num);
78 }
79 KVTelescope* GetTelescope(const Char_t* name) const;
80 KVRing* GetRing(const Char_t* layer, const Char_t* ring_name) const;
81 KVRing* GetRing(const Char_t* layer, UInt_t ring_number) const;
82 KVRing* GetRing(UInt_t layer, const Char_t* ring_name) const;
83 KVRing* GetRing(UInt_t layer, UInt_t ring_number) const;
84
85 virtual Double_t GetSolidAngleByLayerAndRing(const Char_t* layer, UInt_t ring_number)
86 {
88 return GetRing(layer, ring_number)->GetSolidAngle();
89 }
90 virtual Double_t GetSolidAngleByLayer(const Char_t* layer)
91 {
93 Double_t sol_ang = 0;
94 KVRing* cou;
95 TIter nxtcou(GetLayer(layer)->GetStructures());
96 while ((cou = (KVRing*) nxtcou())) sol_ang += cou->GetSolidAngle();
97 return sol_ang;
98 }
99
100 virtual Double_t GetTotalSolidAngle(void) const;
103
104 ClassDef(KVASMultiDetArray, 1) //Azimuthally-symmetric multidetector arrays
105};
106
107#endif
int Int_t
unsigned int UInt_t
char Char_t
float Float_t
double Double_t
#define ClassDef(name, id)
char name[80]
Group in axially-symmetric array (obsolete)
Definition KVASGroup.h:17
Base class for azimuthally-symmetric multidetector arrays (obsolete)
virtual void set_up_telescope(KVDetector *de, KVDetector *e, KVIDTelescope *idt, TCollection *l)
Set up detectors in de-e identification telescope and add to idtels.
virtual void MergeGroups(KVASGroup *kg1, KVASGroup *kg2)
KVRing * GetRing(const Char_t *layer, const Char_t *ring_name) const
find named ring in named layer
virtual KVNameValueList * DetectParticle(KVNucleus *part)
virtual void set_up_single_stage_telescope(KVDetector *det, KVIDTelescope *idt, TCollection *l)
Set up detector in single-stage identification telescope and add to idtels.
virtual Double_t GetTotalSolidAngle(void) const
KVLayer * GetLayer(const Char_t *name) const
KVNameValueList * DetectParticle_KV(KVNucleus *part)
KVTelescope * GetTelescope(const Char_t *name) const
Return pointer to telescope in array with name given by "name".
virtual Double_t GetSolidAngleByLayerAndRing(const Char_t *layer, UInt_t ring_number)
void SetGroups(KVLayer *, KVLayer *)
Update the list of groups in the detector array by comparing all telescopes in two layers.
void UpdateGroupsInRings(KVRing *r1, KVRing *r2)
Calculate groups by comparing two rings in different layers.
virtual void AddToGroups(KVTelescope *kt1, KVTelescope *kt2)
void AnalyseGroupAndReconstructEvent(KVReconstructedEvent *event, KVGroup *grp)
KVLayer * GetLayer(Int_t num) const
void AnalyseTelescopes(KVReconstructedEvent *event, TList *kvtl)
UInt_t fGr
used to number groups
virtual KVGroup * GetGroupWithAngles(Float_t theta, Float_t phi)
return pointer to group in array according to given polar coordinates
virtual Double_t GetSolidAngleByLayer(const Char_t *layer)
void GetIDTelescopesForGroup(KVGroup *grp, TCollection *tel_list)
UInt_t fCurrentLayerNumber
used to number layers
TList * GetTelescopes(Float_t theta, Float_t phi)
Base class for detector geometry description.
Definition KVDetector.h:160
const KVSeqCollection * GetStructures() const
KVGeoStrucElement * GetStructure(const Char_t *name) const
Group of detectors which can be treated independently of all others in array.
Definition KVGroup.h:20
Base class for all detectors or associations of detectors in array which can identify charged particl...
Set of detectors at a similar distance from target (obsolete)
Definition KVLayer.h:33
Base class for describing the geometry of a detector array.
Bool_t IsROOTGeometry() const
KVNameValueList * DetectParticle_TGEO(KVNucleus *part)
Handles lists of named parameters with different types, a list of KVNamedParameter objects.
Description of properties and kinematics of atomic nuclei.
Definition KVNucleus.h:126
Event containing KVReconstructedNucleus nuclei reconstructed from hits in detectors.
Ring in INDRA array (obsolete)
Definition KVRing.h:20
Double_t GetSolidAngle(void) const
Definition KVRing.cpp:118
Associates two detectors placed one behind the other.
Definition KVTelescope.h:36