Bug corrected.
[u/mrichter/AliRoot.git] / STEER / AliDetectorTagCuts.cxx
1 /**************************************************************************
2  * Author: Panos Christakoglou.                                           *
3  * Contributors are mentioned in the code where appropriate.              *
4  *                                                                        *
5  * Permission to use, copy, modify and distribute this software and its   *
6  * documentation strictly for non-commercial purposes is hereby granted   *
7  * without fee, provided that the above copyright notice appears in all   *
8  * copies and that both the copyright notice and this permission notice   *
9  * appear in the supporting documentation. The authors make no claims     *
10  * about the suitability of this software for any purpose. It is          *
11  * provided "as is" without express or implied warranty.                  *
12  **************************************************************************/
13
14 /* $Id$ */
15
16 //-----------------------------------------------------------------
17 //                   AliDetectorTagCuts class
18 //   This is the class to deal with the Detector tag level cuts
19 //   Origin: Panos Christakoglou, UOA-CERN, Panos.Christakoglou@cern.ch
20 //-----------------------------------------------------------------
21
22 class AliLog;
23
24 #include "AliDetectorTag.h"
25 #include "AliDetectorTagCuts.h"
26
27 #include "TObjString.h"
28 #include "TString.h"
29
30 ClassImp(AliDetectorTagCuts)
31
32 //___________________________________________________________________________
33 AliDetectorTagCuts::AliDetectorTagCuts() :
34   TObject(),
35   fDetectorsReco(0),
36   fDetectorsDAQ(0),
37   fDetectorsFlag(kFALSE),
38   fDetectorValidityMatch(),
39   fDetectorValidityFlag()
40 {
41   //Default constructor which calls the Reset method.
42   for (int iter = 0; iter<AliDAQ::kHLTId; iter++) {
43     fDetectorValidityMatch[iter] = 0;
44     fDetectorValidityFlag[iter] = 0;
45   }
46 }
47
48 //___________________________________________________________________________
49 AliDetectorTagCuts::~AliDetectorTagCuts() {  
50   //Defaut destructor.
51 }
52
53 //___________________________________________________________________________
54 Bool_t AliDetectorTagCuts::IsAccepted(AliDetectorTag *detTag) const {
55   //Returns true if the event is accepted otherwise false.
56   if (fDetectorsFlag) {
57     Bool_t daqsel = (detTag->GetIntDetectorMaskDAQ() & fDetectorsDAQ) > 0;
58     Bool_t recsel = (detTag->GetIntDetectorMaskReco() & fDetectorsReco) > 0;
59     Bool_t valsel = kTRUE;
60     for (int iter=0;  iter<AliDAQ::kHLTId; iter++) {
61       if (fDetectorValidityFlag[iter])
62         if (!(fDetectorValidityMatch[iter] == detTag->GetDetectorValidityRange(iter)))
63           valsel = kFALSE;
64     }
65     return (daqsel && recsel && valsel);
66   }
67   return true;
68
69 //   if(fDetectorsFlag){
70 //     TString detStr = fDetectors;
71 //     TObjArray *activeDetectors = detTag->GetDetectorMask();
72 //     for (Int_t iDet = 0; iDet < activeDetectors->GetEntries(); iDet++) {
73 //       TObjString *detectorString = (TObjString *)activeDetectors->At(iDet);
74 //       if (!IsSelected(detectorString->GetString(), detStr))return kFALSE;
75 //     }
76 //   }
77 //   return kTRUE;
78 }
79   
80 void AliDetectorTagCuts::SetDetectorValidityValue(TString det, UShort_t val)
81 {
82   // Set Validity requiement for detector
83
84   Short_t detid = AliDAQ::DetectorID(det.Data());
85   fDetectorValidityMatch[detid] = val;
86   fDetectorsFlag = kTRUE;
87 }
88
89 //___________________________________________________________________________
90 // Bool_t AliDetectorTagCuts::IsSelected(TString detName, TString& detectors) const {
91 //   //Returns true if the detector is included
92 //   if ((detectors.CompareTo("ALL") == 0) ||
93 //       detectors.BeginsWith("ALL ") ||
94 //       detectors.EndsWith(" ALL") ||
95 //       detectors.Contains(" ALL ")) {
96 //     detectors = "ALL";
97 //     return kTRUE;
98 //   }
99   
100 //   // search for the given detector
101 //   Bool_t result = kFALSE;
102 //   if ((detectors.CompareTo(detName) == 0) ||
103 //       detectors.BeginsWith(detName+" ") ||
104 //       detectors.EndsWith(" "+detName) ||
105 //       detectors.Contains(" "+detName+" ")) {
106 //     detectors.ReplaceAll(detName, "");
107 //     result = kTRUE;
108 //   }
109
110 //   // clean up the detectors string
111 //   while (detectors.Contains("  ")) detectors.ReplaceAll("  ", " ");
112 //   while (detectors.BeginsWith(" ")) detectors.Remove(0, 1);
113 //   while (detectors.EndsWith(" ")) detectors.Remove(detectors.Length()-1, 1);
114  
115 //   return result;
116 // }