]> git.uio.no Git - u/mrichter/AliRoot.git/blob - STEER/AliCDBRunRange.cxx
track matching macros from Alberto
[u/mrichter/AliRoot.git] / STEER / AliCDBRunRange.cxx
1 /**************************************************************************
2  * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3  *                                                                        *
4  * Author: The ALICE Off-line Project.                                    *
5  * Contributors are mentioned in the code where appropriate.              *
6  *                                                                        *
7  * Permission to use, copy, modify and distribute this software and its   *
8  * documentation strictly for non-commercial purposes is hereby granted   *
9  * without fee, provided that the above copyright notice appears in all   *
10  * copies and that both the copyright notice and this permission notice   *
11  * appear in the supporting documentation. The authors make no claims     *
12  * about the suitability of this software for any purpose. It is          *
13  * provided "as is" without express or implied warranty.                  *
14  **************************************************************************/
15
16 /////////////////////////////////////////////////////////////////////
17 //                                                                 //
18 //  class AliCDBRunRange                                           //
19 //  defines the run validity range of the object:                  //
20 //  [fFirstRun, fLastRun]                                          //
21 //                                                                 //
22 /////////////////////////////////////////////////////////////////////
23
24 #include "AliCDBRunRange.h"
25
26 #include "AliLog.h"
27
28 ClassImp(AliCDBRunRange)
29
30 //___________________________________________________________________________
31 AliCDBRunRange::AliCDBRunRange():
32 fFirstRun(-1), 
33 fLastRun(-1)
34 {
35 // constructor
36
37 }
38
39 //___________________________________________________________________________
40 AliCDBRunRange::AliCDBRunRange(Int_t firstRun, Int_t lastRun):
41 fFirstRun(firstRun), 
42 fLastRun(lastRun)
43 {
44 // constructor
45
46 }
47
48 //___________________________________________________________________________
49 AliCDBRunRange::~AliCDBRunRange() {
50 // destructor
51
52 }
53
54 //___________________________________________________________________________
55 Bool_t AliCDBRunRange::Overlaps(const AliCDBRunRange& other) const {
56 // check if this runRange overlaps other runRange
57         
58         if (!(IsValid() && other.IsValid())) {
59                 AliError("Comparing invalid run ranges!");
60                 return kFALSE;
61         }       
62         
63         if (IsAnyRange() || other.IsAnyRange()) {
64                 AliError("Comparing unspecified ranges!");
65                 return kFALSE;
66         }
67         
68         return (fFirstRun <= other.fFirstRun && other.fFirstRun <= fLastRun
69                         || fFirstRun <= other.fLastRun 
70                                 && other.fLastRun <= fLastRun)
71                 || (other.fFirstRun <= fFirstRun && fFirstRun <= other.fLastRun
72                         || other.fFirstRun <= fLastRun 
73                                 && fLastRun <= other.fLastRun);
74 }
75
76 //___________________________________________________________________________
77 Bool_t AliCDBRunRange::Comprises(const AliCDBRunRange& other) const {
78 // check if this runRange contains other runRange
79
80         if (!(IsValid() && other.IsValid())) {
81                 AliError("Comparing invalid run ranges!");
82                 return kFALSE;
83         }       
84         
85         if (IsAnyRange()) {
86                 return kTRUE;
87         }
88
89         return fFirstRun <= other.fFirstRun && other.fFirstRun <= fLastRun
90                 && fFirstRun <= other.fLastRun && other.fLastRun <= fLastRun;
91 }
92
93 //___________________________________________________________________________
94 Bool_t AliCDBRunRange::IsEqual(const TObject* obj) const {
95 // check if this runRange is equal to other runRange
96         
97         if (this == obj) {
98                 return kTRUE;
99         }
100
101         if (AliCDBRunRange::Class() != obj->IsA()) {
102                 return kFALSE;
103         }
104         AliCDBRunRange* other = (AliCDBRunRange*) obj;
105         return fFirstRun == other->fFirstRun && fLastRun == other->fLastRun;
106 }
107
108 //___________________________________________________________________________
109 Bool_t AliCDBRunRange::IsValid() const {
110 // validity check
111
112         if (fFirstRun < 0 && fLastRun < 0) {
113                 return kTRUE;
114         }
115
116         if (fFirstRun >= 0 && fLastRun >= fFirstRun) {
117                 return kTRUE;
118         }
119
120         return kFALSE;
121 }
122
123