// -*- mode: c++ -*- // // $Id: BrMultRdo.h,v 1.7 2002/05/14 18:51:37 cholm Exp $ // #ifndef BRAT_BrMultRdo #define BRAT_BrMultRdo #ifndef ROOT_TObject #include "TObject.h" #endif #ifndef ROOT_TClonesArray #include "TClonesArray.h" #endif #ifndef BRAT_BrDataObject #include "BrDataObject.h" #endif #ifndef BRAT_BrNestedHack #include "BrNestedHack.h" #endif class BrMultRdo : public BrDataObject { public: // Nested class for single hits; class BrSingle : public TObject { private: Short_t fId; // DAQ id for this ADC channel Int_t fCalibratedAdc; // Pedestal subratracted ADC Float_t fEnergy; // Deposited energy Float_t fMultiplicity; // Multiplicity Bool_t fIsSaturated; // public: BrSingle(); BrSingle(Short_t no, Int_t calAdc=0, Float_t energy=0, Float_t multiplicity=0, Bool_t isSaturated=kFALSE); virtual ~BrSingle() {} virtual void Clear(); Short_t GetId() const { return fId; } Int_t GetCalibratedAdc() const { return fCalibratedAdc; } Float_t GetEnergy() const { return fEnergy; } Float_t GetMultiplicity() const { return fMultiplicity; } Bool_t IsSaturated() const { return fIsSaturated; } void SetId(Short_t id) { fId = id; } void SetCalibratedAdc(Int_t calAdc) { fCalibratedAdc = calAdc; } void SetEnergy(Float_t energy) { fEnergy = energy; } void SetMultiplicity(Float_t mult) { fMultiplicity = mult; } void SetSaturated(Bool_t saturated) { fIsSaturated = saturated; } virtual void Print(Option_t* option="") const; //*MENU* virtual Int_t Compare(const TObject* obj) const; ClassDefNested(BrSingle, 1) // Element in SMA/TMA RDO data }; // Nested class for Ring hits; class BrRing : public TObject { private: Short_t fId; // DAQ id for this ring Int_t fCalibratedAdc; // Pedestal subratracted ADC Float_t fEnergy; // Deposited energy Float_t fMultiplicity; // Multiplicity Short_t fHits; // Indvidual elements hit Float_t fEta; // Pseudo Rapidity of this ring Float_t fAvgEta; // Weighted (Hijing) Float_t fdNdEta; // dNdEta calculated for ring public: BrRing(); BrRing(Short_t id, Int_t calAdc=0, Float_t energy=0, Float_t multiplicity=0, Short_t hits=0, Float_t eta=0); virtual ~BrRing() {} virtual void Clear(); Short_t GetId() const { return fId; } Int_t GetCalibratedAdc() const { return fCalibratedAdc; } Float_t GetEnergy() const { return fEnergy; } Float_t GetMultiplicity() const { return fMultiplicity; } Short_t GetHits() const { return fHits; } Float_t GetEta() const { return fEta; } Float_t GetAvgEta() const { return fAvgEta; } Float_t GetdNdEta() const { return fdNdEta; } void SetId(Short_t id) { fId = id; } void SetCalibratedAdc(Int_t calAdc) { fCalibratedAdc = calAdc; } void SetEnergy(Float_t energy) { fEnergy = energy; } void SetMultiplicity(Float_t mult) { fMultiplicity = mult; } void SetHits(Short_t hits) { fHits = hits; } void SetEta(Float_t eta) { fEta = eta; } void SetAvgEta(Float_t eta) { fAvgEta = eta; } void SetdNdEta(Float_t dNdEta) { fdNdEta = dNdEta; } virtual void Print(Option_t* option="") const; //*MENU* virtual Int_t Compare(const TObject* obj) const; ClassDefNested(BrRing, 2) // Ring in SMA/TMA RDO data }; private: TClonesArray fSingle; // Array of single elements data TClonesArray fRing; // Array of ring data Int_t fArrayCalibratedAdc; Float_t fArrayEnergy; Float_t fArrayMultiplicity; Short_t fArrayHits; public: BrMultRdo(); BrMultRdo(const char* name, const char* title); virtual ~BrMultRdo(); virtual void Clear(Option_t* option=""); virtual void Print(Option_t* option="A") const; //*MENU* BrSingle* FindSingle(int id) const; BrRing* FindRing(int id) const; BrSingle* AddSingle(Short_t id=-1, Int_t calAdc=0, Float_t energy=0, Float_t multiplicity=0, Bool_t isSaturated=kFALSE); BrRing* AddRing(Short_t id=-1, Int_t calAdc=0, Float_t energy=0, Float_t multiplicity=0, Short_t hits=0, Float_t eta=0); const TClonesArray& GetSingles() const { return fSingle; } const TClonesArray& GetRings() const { return fRing; } Int_t GetSingleCalibratedAdc(Int_t i) const; Float_t GetSingleEnergy(Int_t i) const; Float_t GetSingleMultiplicity(Int_t i) const; Bool_t IsSingleSaturated(Int_t i) const; Int_t GetRingCalibratedAdc(Int_t i) const; Float_t GetRingEnergy(Int_t i) const; Float_t GetRingMultiplicity(Int_t i) const; Short_t GetRingHits(Int_t i) const; Float_t GetRingEta(Int_t i) const; Float_t GetRingAvgEta(Int_t i) const; Float_t GetRingdNdEta(Int_t i) const; Int_t GetArrayCalibratedAdc() const { return fArrayCalibratedAdc; } Float_t GetArrayEnergy() const { return fArrayEnergy; } Float_t GetArrayMultiplicity() const { return fArrayMultiplicity; } Short_t GetArrayHits() const { return fArrayHits; } void SetSingleCalibratedAdc(Int_t i, Int_t x); void SetSingleEnergy(Int_t i, Float_t x); void SetSingleMultiplicity(Int_t i, Float_t x); void SetIsSingleSaturated(Int_t i, Bool_t x=kTRUE); void SetRingCalibratedAdc(Int_t i, Int_t x); void SetRingEnergy(Int_t i, Float_t x); void SetRingMultiplicity(Int_t i, Float_t x); void SetRingHits(Int_t i, Int_t x); void SetRingEta(Int_t i, Float_t x); void SetRingAvgEta(Int_t i, Float_t x); void SetRingdNdEta(Int_t i, Float_t x); void SetArrayCalibratedAdc(Int_t x); void SetArrayEnergy(Float_t x); void SetArrayMultiplicity(Float_t x); void SetArrayHits(Int_t x); ClassDef(BrMultRdo,2) // RDO structure for SMA/TMA }; //____________________________________________________________________ inline void BrMultRdo::SetArrayCalibratedAdc(Int_t x) { fArrayCalibratedAdc = x > 0 ? x : 0; } //____________________________________________________________________ inline void BrMultRdo::SetArrayEnergy(Float_t x) { fArrayEnergy = x > 0 ? x : 0; } //____________________________________________________________________ inline void BrMultRdo::SetArrayMultiplicity(Float_t x) { fArrayMultiplicity = x > 0 ? x : 0; } //____________________________________________________________________ inline void BrMultRdo::SetArrayHits(Int_t x) { fArrayHits = x > 0 ? x : 0; } #endif // // $Log: BrMultRdo.h,v $ // Revision 1.7 2002/05/14 18:51:37 cholm // In the current ROOT CVS head (May 14, 2002) the 'ClassDef' macro has // changed a lot, meaning that it's no longer nessecary to redefine it // for nested classes. Hence, I introduced the header file // BrNestedHack, which only defined ClassDefNested to something else than // ClassDef if the version number of ROOT is less than 3.03/05, and then only // if it's not processed by rootcint. note, that this meant that preprocessing // had to be turned on for these (and other) header (rootcint option -p). // The data classs header files have been changed to include the new // header file BrNestedHack.h (which is ofcourse installed). // // Revision 1.6 2001/11/25 15:45:03 sanders // Updated classdef for embedded ring class to 2, this should have // been done when (instead of) updating the parent class classdef. // // Revision 1.5 2001/11/24 15:45:19 sanders // Added ring dNdEta and HIJING weighted eta values to data structure. // Bumped ClassDef to 2. // // Revision 1.4 2001/08/30 12:33:25 cholm // Added method to retrive (const) references to internal arrays. Useful // if one wants to loop over the single element, or ring data. // // Revision 1.3 2001/08/10 14:06:55 cholm // Fix to allow putting theses on branch in a new TTree - thanks Rene // // Revision 1.2 2001/06/25 14:31:16 cholm // Made Print conform to TObject // // Revision 1.1.1.1 2001/06/21 14:55:02 hagel // Initial revision of brat2 // // Revision 1.4 2001/06/01 15:47:41 cholm // Fix of some default values from -1 to zero (gave bad results) // // Revision 1.3 2001/05/31 01:44:36 cholm // Second rewamp of this directory. All RDO modules use the common // BrMultRdoModule, and they both write BrMultRdo Objects. Also introduced // ABC for Br[Tile|Si][Parameters|Calibration] since they have a lot in common, // and the code can be made more efficient this way. // // A possible further thing to do, is to make an ABC for the CentModules, and // the corresponding calibration modules, since they are very VERY similar. // However, the current module BrMultCentModule is in the way. Need to talk // to Steve about that. // // Revision 1.2 2001/05/23 12:31:19 cholm // Now compiles, and is almost done. Not used yet // // Revision 1.1 2001/05/17 11:18:29 cholm // Added class BrMultRdo for data storage from Br[Tile|Si]RdoModule. Still developing // //