Ignore:
Timestamp:
03/04/04 15:46:17 (21 years ago)
Author:
tbretz
Message:
*** empty log message ***
Location:
trunk/MagicSoft/Mars/mhist
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/MagicSoft/Mars/mhist/MHCamera.cc

    r3324 r3400  
    164164// sector idx matches the sector of the pixel with index idx.
    165165//
    166 Bool_t MHCamera::MatchSector(Int_t idx, Int_t sector) const
    167 {
    168     return sector<0 ? kTRUE : (*fGeomCam)[idx].GetSector()==(UInt_t)sector;
     166Bool_t MHCamera::MatchSector(Int_t idx, const TArrayI &sector, const TArrayI &aidx) const
     167{
     168    const MGeomPix &pix = (*fGeomCam)[idx];
     169    return FindVal(sector, pix.GetSector()) && FindVal(aidx, pix.GetAidx());
    169170}
    170171
     
    270271// entries with match the given sector are taken into account.
    271272//
    272 Stat_t MHCamera::GetMeanSector(Int_t sector, Bool_t all) const
     273Stat_t MHCamera::GetMeanSectors(const TArrayI &sector, const TArrayI &aidx, Bool_t all) const
    273274{
    274275    if (fNcells<=1)
     
    280281    for (int i=0; i<fNcells-2; i++)
    281282    {
    282         if ((all || IsUsed(i)) && MatchSector(i, sector))
     283        if ((all || IsUsed(i)) && MatchSector(i, sector, aidx))
    283284        {
    284285            mean += fArray[i+1];
     
    296297// entries with match the given sector are taken into account.
    297298//
    298 Stat_t MHCamera::GetRmsSector(Int_t sector, Bool_t all) const
     299Stat_t MHCamera::GetRmsSectors(const TArrayI &sector, const TArrayI &aidx, Bool_t all) const
    299300{
    300301    if (fNcells<=1)
     
    307308    for (int i=0; i<fNcells-2; i++)
    308309    {
    309         if ((all || IsUsed(i)) && MatchSector(i, sector))
     310        if ((all || IsUsed(i)) && MatchSector(i, sector, aidx))
    310311        {
    311312            sum += fArray[i+1];
     
    327328// only pixels with matching sector number are taken into account.
    328329//
    329 Double_t MHCamera::GetMinimumSector(Int_t sector, Bool_t all) const
     330Double_t MHCamera::GetMinimumSectors(const TArrayI &sector, const TArrayI &aidx, Bool_t all) const
    330331{
    331332    if (fMinimum != -1111)
     
    338339
    339340    for (Int_t idx=0; idx<fNcells-2; idx++)
    340         if (MatchSector(idx, sector) && (all || IsUsed(idx)) && fArray[idx+1]<minimum)
     341        if (MatchSector(idx, sector, aidx) && (all || IsUsed(idx)) && fArray[idx+1]<minimum)
    341342            minimum = fArray[idx+1];
    342343
     
    350351// only pixels with matching sector number are taken into account.
    351352//
    352 Double_t MHCamera::GetMaximumSector(Int_t sector, Bool_t all) const
     353Double_t MHCamera::GetMaximumSectors(const TArrayI &sector, const TArrayI &aidx, Bool_t all) const
    353354{
    354355    if (fMaximum!=-1111)
     
    360361    Double_t maximum=-FLT_MAX;
    361362    for (Int_t idx=0; idx<fNcells-2; idx++)
    362         if (MatchSector(idx, sector) && (all || IsUsed(idx)) && fArray[idx+1]>maximum)
     363        if (MatchSector(idx, sector, aidx) && (all || IsUsed(idx)) && fArray[idx+1]>maximum)
    363364            maximum = fArray[idx+1];
    364365
     
    496497// into account.
    497498//
    498 TH1D *MHCamera::ProjectionS(Int_t sector, const char *name) const
     499TH1D *MHCamera::ProjectionS(const TArrayI &sector, const TArrayI &aidx, const char *name) const
    499500{
    500501    Int_t nbins = 50;
     
    505506    {
    506507        pname.Prepend(GetName());
    507         if (sector>=0)
    508             pname += sector;
     508        if (sector.GetSize()>0)
     509        {
     510            pname += ";";
     511            for (int i=0; i<sector.GetSize(); i++)
     512                pname += sector[i];
     513        }
     514        if (aidx.GetSize()>0)
     515        {
     516            pname += ";";
     517            for (int i=0; i<aidx.GetSize(); i++)
     518                pname += aidx[i];
     519        }
    509520    }
    510521
     
    520531    if (!h1)
    521532    {
    522         Double_t min = GetMinimumSector(sector);
    523         Double_t max = GetMaximumSector(sector);
     533        Double_t min = GetMinimumSectors(sector, aidx);
     534        Double_t max = GetMaximumSectors(sector, aidx);
    524535
    525536        Int_t newbins=0;
     
    536547    // Fill the projected histogram
    537548    for (Int_t idx=0; idx<fNcells-2; idx++)
    538         if (IsUsed(idx) && MatchSector(idx, sector))
     549        if (IsUsed(idx) && MatchSector(idx, sector, aidx))
    539550            h1->Fill(GetBinContent(idx+1));
    540551
  • trunk/MagicSoft/Mars/mhist/MHCamera.h

    r3237 r3400  
    7878    void   ResetUsed(Int_t idx)    { CLRBIT(fUsed[idx], kIsUsed); }
    7979
    80     Bool_t MatchSector(Int_t idx, Int_t sector) const;
     80    Bool_t FindVal(const TArrayI &arr, Int_t val) const
     81    {
     82        const Int_t n = arr.GetSize();
     83        if (n==0)
     84            return kTRUE;
     85
     86        const Int_t *p = arr.GetArray();
     87        const Int_t *end = p+n;
     88        while (p<end)
     89            if (val==*p++)
     90                return kTRUE;
     91
     92        return kFALSE;
     93    }
     94    Bool_t MatchSector(Int_t idx, const TArrayI &sector, const TArrayI &aidx) const;
    8195
    8296    // This is a trick to remove TH1 entries from the context menu
     
    140154    Stat_t   GetBinError(Int_t binx, Int_t biny, Int_t binz) const { return GetBinError(binx); }
    141155
    142     Double_t GetMinimum(Bool_t all) const { return GetMinimumSector(-1, all); }
    143     Double_t GetMaximum(Bool_t all) const { return GetMaximumSector(-1, all); }
    144 
    145     Double_t GetMinimum() const { return GetMinimumSector(-1, kFALSE); }
    146     Double_t GetMaximum() const { return GetMaximumSector(-1, kFALSE); }
    147 
    148     Double_t GetMinimumSector(Int_t sector, Bool_t all=kFALSE) const;
    149     Double_t GetMaximumSector(Int_t sector, Bool_t all=kFALSE) const;
     156    Double_t GetMinimum(Bool_t all) const { return GetMinimumSectors(TArrayI(), TArrayI(), all); }
     157    Double_t GetMaximum(Bool_t all) const { return GetMaximumSectors(TArrayI(), TArrayI(), all); }
     158
     159    Double_t GetMinimum() const { return GetMinimumSectors(TArrayI(), TArrayI(), kFALSE); }
     160    Double_t GetMaximum() const { return GetMaximumSectors(TArrayI(), TArrayI(), kFALSE); }
     161
     162    Double_t GetMinimumSector(Int_t sector, Int_t aidx, Bool_t all=kFALSE) const
     163    {
     164        return GetMinimumSectors(TArrayI(1, &sector), TArrayI(1, &aidx), all);
     165    }
     166    Double_t GetMaximumSector(Int_t sector, Int_t aidx, Bool_t all=kFALSE) const
     167    {
     168        return GetMaximumSectors(TArrayI(1, &sector), TArrayI(1, &aidx), all);
     169    }
     170    Double_t GetMinimumSectors(const TArrayI &sector, const TArrayI &aidx, Bool_t all=kFALSE) const;
     171    Double_t GetMaximumSectors(const TArrayI &sector, const TArrayI &aidx, Bool_t all=kFALSE) const;
    150172
    151173    void     SetLevels(const TArrayF &arr);
     
    186208    void     AddNotify(TObject *event);
    187209
    188     Stat_t   GetMean(Bool_t all) const { return GetMeanSector(-1, all); }
    189     Stat_t   GetRMS(Bool_t all)  const { return GetRmsSector(-1, all); }
    190 
    191     Stat_t   GetMean(Int_t sector=-1) const { return GetMeanSector(-1, kFALSE); }
    192     Stat_t   GetRMS(Int_t sector=-1)  const { return GetRmsSector(-1, kFALSE); }
    193 
    194     Stat_t   GetMeanSector(Int_t sector, Bool_t all=kFALSE) const;
    195     Stat_t   GetRmsSector(Int_t sector, Bool_t all=kFALSE) const;
     210    Stat_t   GetMean(Bool_t all) const { return GetMeanSectors(TArrayI(), TArrayI(), all); }
     211    Stat_t   GetRMS(Bool_t all)  const { return GetRmsSectors(TArrayI(), TArrayI(), all); }
     212
     213    Stat_t   GetMean(Int_t=0) const { return GetMeanSectors(TArrayI(), TArrayI(), kFALSE); }
     214    Stat_t   GetRMS(Int_t=0)  const { return GetRmsSectors(TArrayI(), TArrayI(), kFALSE); }
     215
     216    Stat_t   GetMeanSector(Int_t sector, Int_t aidx, Bool_t all=kFALSE) const
     217    {
     218        return GetMeanSectors(TArrayI(1, &sector), TArrayI(1, &aidx), all);
     219    }
     220    Stat_t   GetRmsSector(Int_t sector, Int_t aidx, Bool_t all=kFALSE) const
     221    {
     222        return GetRmsSectors(TArrayI(1, &sector), TArrayI(1, &aidx), all);
     223    }
     224
     225    Stat_t   GetMeanSectors(const TArrayI &sector, const TArrayI &aidx, Bool_t all=kFALSE) const;
     226    Stat_t   GetRmsSectors(const TArrayI &sector, const TArrayI &aidx, Bool_t all=kFALSE) const;
    196227
    197228    UInt_t   GetNumPixels() const;
    198229
    199     TH1D    *Projection(const char *name="_py") const { return ProjectionS(-1, name); }
    200     TH1D    *ProjectionS(Int_t sector, const char *name="_py") const;
     230    TH1D    *Projection(const char *name="_py") const { return ProjectionS(TArrayI(), TArrayI(), name); }
     231    TH1D    *ProjectionS(Int_t sector, Int_t aidx, const char *name="_py") const
     232    {
     233        return ProjectionS(TArrayI(1, &sector), TArrayI(1, &aidx), name);
     234    }
     235    TH1D    *ProjectionS(const TArrayI &sector, const TArrayI &aidx, const char *name="_py") const;
    201236
    202237    const MGeomCam &GetGeomCam() const { return *fGeomCam; }
  • trunk/MagicSoft/Mars/mhist/MHEvent.cc

    r3325 r3400  
    238238
    239239        txt += fMcEvt->GetParticleName();
     240        txt += " ";
    240241
    241242        s.Insert(0, txt);
Note: See TracChangeset for help on using the changeset viewer.