Fixes for bug #52499: Field polarities inconsistiency
[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 && other.fLastRun <= fLastRun))
70           || ((other.fFirstRun <= fFirstRun && fFirstRun <= other.fLastRun)
71               || (other.fFirstRun <= fLastRun && fLastRun <= other.fLastRun));
72 }
73
74 //___________________________________________________________________________
75 Bool_t AliCDBRunRange::Comprises(const AliCDBRunRange& other) const {
76 // check if this runRange contains other runRange
77
78         if (!(IsValid() && other.IsValid())) {
79                 AliError("Comparing invalid run ranges!");
80                 return kFALSE;
81         }       
82         
83         if (IsAnyRange()) {
84                 return kTRUE;
85         }
86
87         return fFirstRun <= other.fFirstRun && other.fFirstRun <= fLastRun
88                 && fFirstRun <= other.fLastRun && other.fLastRun <= fLastRun;
89 }
90
91 //___________________________________________________________________________
92 Bool_t AliCDBRunRange::IsEqual(const TObject* obj) const {
93 // check if this runRange is equal to other runRange
94         
95         if (this == obj) {
96                 return kTRUE;
97         }
98
99         if (AliCDBRunRange::Class() != obj->IsA()) {
100                 return kFALSE;
101         }
102         AliCDBRunRange* other = (AliCDBRunRange*) obj;
103         return fFirstRun == other->fFirstRun && fLastRun == other->fLastRun;
104 }
105
106 //___________________________________________________________________________
107 Bool_t AliCDBRunRange::IsValid() const {
108 // validity check
109
110         if (fFirstRun < 0 && fLastRun < 0) {
111                 return kTRUE;
112         }
113
114         if (fFirstRun >= 0 && fLastRun >= fFirstRun) {
115                 return kTRUE;
116         }
117
118         return kFALSE;
119 }
120
121