Add possibility to rotate event
[u/mrichter/AliRoot.git] / RALICE / AliSignal.h
index 4892fc5..ee6bb95 100644 (file)
@@ -3,52 +3,99 @@
 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
  * See cxx source for full Copyright notice                               */
 
-/* $Id$ */
+// $Id$
 
-///////////////////////////////////////////////////////////////////////////
-// Class AliSignal
-// Handling of ALICE (extrapolated) signals.
-//
-// Note :
-// ------
-// Signal positions (r) and reference frames (f) are specified via
-// SetPosition(r,f) under the following conventions :
-//
-// f="car" ==> r is Cartesian   (x,y,z)
-// f="sph" ==> r is Spherical   (r,theta,phi)
-// f="cyl" ==> r is Cylindrical (rho,phi,z)
-//
-// All angles are in radians.
-//
-// Example :
-// ---------
-//
-// AliSignal s;
-// Float_t pos[3]={-1,25,7};
-// Float_t signal=120.8;
-// s.SetPosition(pos,"car");
-// s.SetSignal(signal);
-// Float_t loc[3];
-// s.GetPosition(loc,"sph");
-// Float_t adc=s.GetSignal();
-//
-//--- NvE 23-jan-1999 UU-SAP Utrecht
-///////////////////////////////////////////////////////////////////////////
+#include "TObject.h"
+#include "TArrayF.h"
+#include "TH1.h"
+#include "TObjArray.h"
+#include "TArrayI.h"
 
 #include "AliPosition.h"
+#include "AliAttrib.h"
+#include "AliObjMatrix.h"
 
-class AliSignal : public TObject,public AliPosition
+class AliDevice;
+class AliTrack;
+
+class AliSignal : public TNamed,public AliPosition,public AliAttrib
 {
  public:
-  AliSignal();                         // Default constructor
-  ~AliSignal();                        // Destructor
-  virtual void SetSignal(Float_t sig); // Store signal value
-  virtual Float_t GetSignal();         // Provide signal value
-  virtual void Reset();                // Reset all values to 0
+  AliSignal();                                                  // Default constructor
+  virtual ~AliSignal();                                         // Destructor
+  AliSignal(const AliSignal& s);                                // Copy constructor
+  virtual TObject* Clone(const char* name="") const;            // Make a deep copy and provide its pointer
+  virtual void SetSignal(Double_t sig,Int_t j=1);               // Store signal value for the j-th slot
+  virtual void SetSignal(Double_t sig,TString name);            // Store signal value for the name-specified slot
+  virtual void AddSignal(Double_t sig,Int_t j=1);               // Add value to the signal of the j-th slot
+  virtual void AddSignal(Double_t sig,TString name);            // Add value to the signal of the name-specified slot
+  virtual Float_t GetSignal(Int_t j=1,Int_t mode=0) const;      // Provide j-th (corrected) signal value
+  virtual Float_t GetSignal(TString name,Int_t mode=0) const;   // Provide name-specified (corrected) signal value
+  virtual void SetSignalError(Double_t dsig,Int_t j=1);         // Store error on the signal of the j-th slot
+  virtual void SetSignalError(Double_t dsig,TString name);      // Store error on the signal of the name-specified slot
+  virtual Float_t GetSignalError(Int_t j=1) const;              // Provide error on the signal of the j-th slot
+  virtual Float_t GetSignalError(TString name) const;           // Provide err. on the sig. of the name-specified slot
+  virtual void ResetSignals(Int_t mode=0);                      // Selective reset of signal values and/or errors
+  virtual void DeleteSignals(Int_t mode=0);                     // Selectie delete of signal values and/or errors
+  virtual void Reset(Int_t mode=0);                             // Reset signal and position values and errors
+  virtual void Data(TString f="car",TString u="rad") const;     // Print all signal info for frame f and ang units u
+  virtual void List(Int_t j=0) const;                           // Print signal info for the j-th (all) slot(s)
+  virtual void List(TString name) const;                        // Print signal info for the name-specified slot
+  void ListWaveform(Int_t j=0) const;                           // Print info for the j-th (all) waveform(s)
+  void ListTrack(Int_t j=0) const;                              // Print info for the j-th (all) assoc. track(s)
+  Int_t GetNvalues() const;                                     // Provide the number of signal values
+  Int_t GetNerrors() const;                                     // Provide the number of specified errors
+  virtual Int_t GetNslots() const;                              // Provide the number of exising slots
+  Int_t GetNwaveforms() const;                                  // Provide the number of specified waveforms
+  void SetWaveform(TH1F* waveform,Int_t j=1);                   // Set the histogram for the j-th waveform
+  TH1F* GetWaveform(Int_t j=1) const;                           // Pointer to the histo of the j-th waveform
+  TH1F* GetWaveform(TString name) const;                        // Pointer to the waveform with the specified name
+  Int_t GetWaveformIndex(TString name) const;                   // Index of the waveform with the specified name
+  void ResetWaveform(Int_t j=1);                                // Reset the histo of the j-th waveform
+  void ResetWaveform(TString name);                             // Reset the waveform histo with the specified name
+  void DeleteWaveform(Int_t j=1);                               // Delete histo of the j-th waveform
+  void DeleteWaveform(TString name);                            // Delete waveform histo with the specified name
+  Int_t GetNlinks(TObject* obj=0,Int_t j=0) const;              // Number of links for the specified object
+  Int_t GetNlinks(TObject* obj,TString name) const;             // Number of links for the specified object
+  void SetLink(TObject* obj,Int_t j=1,Int_t k=1);               // Link object to the j-th slot at position k
+  void SetLink(TObject* obj,TString name,Int_t k=1);            // Link object to the name-specified slot at pos. k
+  void AddLink(TObject* obj,Int_t j=1);                         // Link obj to the j-th slot at 1st free position
+  void AddLink(TObject* obj,TString name);                      // Link obj to the name-specified slot at 1st free pos.
+  TObject* GetLink(Int_t j=1,Int_t k=1) const;                  // Pointer of the object linked to the j-th slot
+  TObject* GetLink(TString name,Int_t k=1) const;               // Pointer of object linked to the name-specified slot
+  Int_t GetIndices(TObject* obj,TArrayI& js,TArrayI& ks) const; // Slot and pos. indices for linked objects
+  Int_t GetIndices(TObject* obj,Int_t j,TArrayI& ks) const;     // Pos. indices for linked objects of j-th slot 
+  Int_t GetIndices(TObject* obj,TString name,TArrayI& ks) const;// Pos. indices for linked objects of name-spec. slot 
+  Int_t GetIndices(TObject* obj,TArrayI& js,Int_t k) const;     // Slot indices for linked objects at pos. k 
+  void ResetLink(Int_t j=1,Int_t k=1);                          // Reset the link(s) of the j-th slot 
+  void ResetLink(TString name,Int_t k=1);                       // Reset the link(s) of the name-specified slot 
+  void ResetLinks(TObject* obj,Int_t j=0,Int_t k=0);            // Reset link(s) to object obj for j-th slot
+  void ResetLinks(TObject* obj,TString name,Int_t k=0);         // Reset link(s) to object obj for name-specified slot
+  void SetSwapMode(Int_t swap=1);                               // Set swapmode flag for the link storage
+  Int_t GetSwapMode() const;                                    // Provide swapmode flag for the link storage
+  void SetDevice(TObject* dev);                                 // Store pointer to the device that owns this signal
+  AliDevice* GetDevice() const;                                 // Provide pointer to the owning device 
+  void AddTrack(AliTrack& t,Int_t mode=1);                      // Relate an AliTrack to this signal
+  void RemoveTrack(AliTrack& t,Int_t mode=1);                   // Remove related AliTrack from this signal
+  void RemoveTracks(Int_t mode=1);                              // Remove all related AliTracks from this signal
+  Int_t GetNtracks(AliTrack* t=0) const;                        // Provide number of related AliTracks
+  AliTrack* GetTrack(Int_t j) const;                            // Access to the related AliTrack number j
+  AliTrack* GetIdTrack(Int_t id) const;                         // Access to the related AliTrack with ID=id
+  Int_t GetSignalFlag(Int_t j=1) const;                         // Provide signal value flag of the j-th slot
+  Int_t GetSignalFlag(TString name) const;                      // Provide signal value flag of the name specified slot
+  Int_t GetErrorFlag(Int_t j=1) const;                          // Provide error value flag of the j-th slot
+  Int_t GetErrorFlag(TString name) const;                       // Provide error value flag of the name specified slot
 
  protected:
-  Float_t fSignal; // Signal value
+  void SetSigFlags(Int_t is,Int_t ie,Int_t j); // Set flags for signal and/or error value settings
+  TArrayF* fSignals;                           // Signal values
+  TArrayF* fDsignals;                          // Errors on signal values
+  TArrayI* fSigflags;                          // Flags to mark setting of signal and/or error values 
+  TObjArray* fWaveforms;                       // The 1D histograms containing the signal waveforms
+  AliObjMatrix* fLinks;                        // Pointers of objects related to the various slots
+  TObject* fDevice;                            // Pointer to the device that owns this signal
+  TObjArray* fTracks;                          // Pointers to associated tracks
 
- ClassDef(AliSignal,1) // Class definition to enable ROOT I/O
+ ClassDef(AliSignal,16) // Generic handling of (extrapolated) detector signals.
 };
 #endif