ROOT logo
/**************************************************************************
 * Author: Panos Christakoglou.                                           *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/

/* $Id$ */

//-----------------------------------------------------------------
//                   AliRunTagCuts class
//   This is the class to deal with the run tag level cuts
//   Origin: Panos Christakoglou, UOA-CERN, Panos.Christakoglou@cern.ch
//-----------------------------------------------------------------

class AliLog;
class AliESD;

#include "AliRunTag.h"
#include "AliRunTagCuts.h"

ClassImp(AliRunTagCuts)


//___________________________________________________________________________
AliRunTagCuts::AliRunTagCuts() :
  TObject(),
  fAliceRunId(-1),                  
  fAliceRunIdFlag(kFALSE),              
  fAliceMagneticField(-1.),          
  fAliceMagneticFieldFlag(kFALSE),      
  fAliceDipoleField(-1.),
  fAliceDipoleFieldFlag(kFALSE),
  fAliceRunStartTimeMin(-1),        
  fAliceRunStartTimeMax(-1),        
  fAliceRunStartTimeFlag(kFALSE),       
  fAliceRunStopTimeMin(-1),         
  fAliceRunStopTimeMax(-1),         
  fAliceRunStopTimeFlag(kFALSE),        
  fAlirootVersion(""),              
  fAlirootVersionFlag(kFALSE),          
  fRootVersion(""),                 
  fRootVersionFlag(kFALSE),             
  fGeant3Version(""),               
  fGeant3VersionFlag(kFALSE),   
  fLHCPeriod(""),
  fLHCPeriodFlag(kFALSE),
  fRecPass(""),
  fRecPassFlag(kFALSE),
  fProdName(""),
  fProdNameFlag(kFALSE),
  fAliceRunValidation(0),             
  fAliceRunValidationFlag(kFALSE),         
  fAliceRunQualities(""),
  fAliceRunQualitiesFlag(kFALSE),
  fAliceBeamEnergy(-1),             
  fAliceBeamEnergyFlag(kFALSE),         
  fAliceBeamType(""),               
  fAliceBeamTypeFlag(kFALSE),           
  fAliceCalibrationVersion(-1),    
  fAliceCalibrationVersionFlag(kFALSE),
  fAliceDataType(-1),                
  fAliceDataTypeFlag(kFALSE),
  fBeamTriggerRange(),
  fBeamTriggerFlag(kFALSE),
  fCollisionTriggerRange(),
  fCollisionTriggerFlag(kFALSE),
  fEmptyTriggerRange(),
  fEmptyTriggerFlag(kFALSE),
  fASideTriggerRange(),
  fASideTriggerFlag(kFALSE),
  fCSideTriggerRange(),
  fCSideTriggerFlag(kFALSE),
  fHMTriggerRange(),
  fHMTriggerFlag(kFALSE),
  fMuonTriggerRange(),
  fMuonTriggerFlag(kFALSE),
  fCollisionRateRange(),
  fCollisionRateFlag(kFALSE),
  fMeanVertexRange(),
  fMeanVertexFlag(kFALSE),
  fVertexQualityRange(),
  fVertexQualityFlag(kFALSE)
{
  //Default constructor which calls the Reset method.
}

//___________________________________________________________________________
AliRunTagCuts::~AliRunTagCuts() {  
  //Defaut destructor.
}

//___________________________________________________________________________
void AliRunTagCuts::Reset() {
  //Sets dummy values to every private member.
  fAliceRunId = -1;                  
  fAliceRunIdFlag = kFALSE;              
  fAliceMagneticField = -1.;          
  fAliceMagneticFieldFlag = kFALSE;      
  fAliceDipoleField = -1.;
  fAliceDipoleFieldFlag = kFALSE;
  fAliceRunStartTimeMin = -1;        
  fAliceRunStartTimeMax = -1;        
  fAliceRunStartTimeFlag = kFALSE;       
  fAliceRunStopTimeMin = -1;         
  fAliceRunStopTimeMax = -1;         
  fAliceRunStopTimeFlag = kFALSE;        
  fAlirootVersion = "";              
  fAlirootVersionFlag = kFALSE;          
  fRootVersion = "";                 
  fRootVersionFlag = kFALSE;             
  fGeant3Version = "";               
  fGeant3VersionFlag = kFALSE;           
  fLHCPeriod = "";
  fLHCPeriodFlag = kFALSE;
  fRecPass = "";
  fRecPassFlag = kFALSE;
  fProdName = "";
  fProdNameFlag = kFALSE;
  fAliceRunValidation = 0;             
  fAliceRunValidationFlag = kFALSE;         
  fAliceRunQualities = "";
  fAliceRunQualitiesFlag = kFALSE;
  fAliceBeamEnergy = -1;             
  fAliceBeamEnergyFlag = kFALSE;         
  fAliceBeamType = "";               
  fAliceBeamTypeFlag = kFALSE;           
  fAliceCalibrationVersion = -1;    
  fAliceCalibrationVersionFlag = kFALSE;
  fAliceDataType = -1;                
  fAliceDataTypeFlag = kFALSE;           
  fBeamTriggerRange[0] = 0;
  fBeamTriggerRange[1] = 0;
  fBeamTriggerFlag = kFALSE;
  fCollisionTriggerRange[0] = 0;
  fCollisionTriggerRange[1] = 0;
  fCollisionTriggerFlag = kFALSE;
  fEmptyTriggerRange[0] = 0;
  fEmptyTriggerRange[1] = 0;
  fEmptyTriggerFlag = kFALSE;
  fASideTriggerRange[0] = 0;
  fASideTriggerRange[1] = 0;
  fASideTriggerFlag = kFALSE;
  fCSideTriggerRange[0] = 0;
  fCSideTriggerRange[1] = 0;
  fCSideTriggerFlag = kFALSE;
  fHMTriggerRange[0] = 0;
  fHMTriggerRange[1] = 0;
  fHMTriggerFlag = kFALSE;
  fMuonTriggerRange[0] = 0;
  fMuonTriggerRange[1] = 0;
  fMuonTriggerFlag = kFALSE;
  fCollisionRateRange[0] = 0;
  fCollisionRateRange[1] = 0;
  fCollisionRateFlag = kFALSE;
  fMeanVertexRange[0] = 0;
  fMeanVertexRange[1] = 0;
  fMeanVertexFlag = kFALSE;
  fVertexQualityRange[0] = 0;
  fVertexQualityRange[1] = 0;
  fVertexQualityFlag = kFALSE;
}

void AliRunTagCuts::AddRunQualityValue(Int_t qval)
{
  // Adds to the list of selected run qualities
  fAliceRunQualities += qval;
  fAliceRunQualities += " ";
  fAliceRunQualitiesFlag = kTRUE;
}

//___________________________________________________________________________
Bool_t AliRunTagCuts::IsAccepted(AliRunTag *RunTag) const {
  //Returns true if the event is accepted otherwise false.
  if(fAliceRunIdFlag)
    if((RunTag->GetRunId() != fAliceRunId))
      return kFALSE;
  if(fAliceMagneticFieldFlag)
    if((RunTag->GetMagneticField() != fAliceMagneticField))
      return kFALSE;
  if(fAliceDipoleFieldFlag)
    if((RunTag->GetDipoleField() != fAliceDipoleField))
      return kFALSE;
  if(fAliceRunStartTimeFlag)
    if((RunTag->GetRunStartTime() < fAliceRunStartTimeMin) || (RunTag->GetRunStartTime() > fAliceRunStartTimeMax))
      return kFALSE;
  if(fAliceRunStopTimeFlag)
    if((RunTag->GetRunStopTime() < fAliceRunStopTimeMin) || (RunTag->GetRunStopTime() > fAliceRunStopTimeMax))
      return kFALSE;
  if(fAlirootVersionFlag)
    if((RunTag->GetAlirootVersion() != fAlirootVersion))
      return kFALSE;
  if(fRootVersionFlag)
    if((RunTag->GetRootVersion() != fRootVersion))
      return kFALSE;
  if(fGeant3VersionFlag)
    if((RunTag->GetGeant3Version() != fGeant3Version))
      return kFALSE;
  if(fLHCPeriodFlag)
    if((RunTag->GetLHCPeriod() != fLHCPeriod))
      return kFALSE;
  if(fRecPassFlag)
    if((RunTag->GetReconstructionPass() != fRecPass))
      return kFALSE;
  if(fProdNameFlag)
    if((RunTag->GetProductionName() != fProdName))
      return kFALSE;
  if(fAliceRunValidationFlag)
    if(RunTag->GetRunValidation())
      return kFALSE;
  if (fAliceRunQualitiesFlag) {
    TObjArray *tQualities = fAliceRunQualities.Tokenize(" ");
    Bool_t tQual = kFALSE;

    TString tRQual = "";
    tRQual += RunTag->GetRunQuality();

    for (int iqual=0; iqual<tQualities->GetEntries(); iqual++)
      if (((TObjString *) tQualities->At(iqual))->GetString().Contains(tRQual))
	tQual = kTRUE;
	//      if (EvTag->GetFiredTriggerClasses().Contains(((TObjString *) tClasses->At(iqual))->GetString()))
  
    tQualities->Delete();
    delete tQualities;

    if (!tQual)
      return kFALSE;
  }
  if(fAliceBeamEnergyFlag)
    if(RunTag->GetBeamEnergy() != fAliceBeamEnergy)
      return kFALSE;
  if(fAliceBeamTypeFlag)
    if(RunTag->GetBeamType() != fAliceBeamType)
      return kFALSE;
  if(fAliceCalibrationVersionFlag)
    if(RunTag->GetBeamEnergy() != fAliceBeamEnergy)
      return kFALSE;
  if(fAliceDataTypeFlag)
    if(RunTag->GetDataType() != fAliceDataType)
      return kFALSE;
  if (fBeamTriggerFlag)
    if ((RunTag->GetBeamTriggers() < fBeamTriggerRange[0]) || (RunTag->GetBeamTriggers() > fBeamTriggerRange[1]))
      return kFALSE;
  if (fCollisionTriggerFlag)
    if ((RunTag->GetCollisionTriggers() < fCollisionTriggerRange[0]) || (RunTag->GetCollisionTriggers() > fCollisionTriggerRange[1]))
      return kFALSE;
  if (fEmptyTriggerFlag)
    if ((RunTag->GetEmptyTriggers() < fEmptyTriggerRange[0]) || (RunTag->GetEmptyTriggers() > fEmptyTriggerRange[1]))
      return kFALSE;
  if (fCSideTriggerFlag)
    if ((RunTag->GetCSideTriggers() < fCSideTriggerRange[0]) || (RunTag->GetCSideTriggers() > fCSideTriggerRange[1]))
      return kFALSE;
  if (fASideTriggerFlag)
    if ((RunTag->GetASideTriggers() < fASideTriggerRange[0]) || (RunTag->GetASideTriggers() > fASideTriggerRange[1]))
      return kFALSE;
  if (fHMTriggerFlag)
    if ((RunTag->GetHMTriggers() < fHMTriggerRange[0]) || (RunTag->GetHMTriggers() > fHMTriggerRange[1]))
      return kFALSE;
  if (fMuonTriggerFlag)
    if ((RunTag->GetMuonTriggers() < fMuonTriggerRange[0]) || (RunTag->GetMuonTriggers() > fMuonTriggerRange[1]))
      return kFALSE;
  if (fCollisionRateFlag)
    if ((RunTag->GetCollisionRate() < fCollisionRateRange[0]) || (RunTag->GetCollisionRate() > fCollisionRateRange[1]))
      return kFALSE;
  if (fMeanVertexFlag)
    if ((RunTag->GetMeanVertex() < fMeanVertexRange[0]) || (RunTag->GetMeanVertex() > fMeanVertexRange[1]))
      return kFALSE;
  if (fVertexQualityFlag)
    if ((RunTag->GetVertexQuality() < fVertexQualityRange[0]) || (RunTag->GetVertexQuality() > fVertexQualityRange[1]))
      return kFALSE;

  return kTRUE;
}
 AliRunTagCuts.cxx:1
 AliRunTagCuts.cxx:2
 AliRunTagCuts.cxx:3
 AliRunTagCuts.cxx:4
 AliRunTagCuts.cxx:5
 AliRunTagCuts.cxx:6
 AliRunTagCuts.cxx:7
 AliRunTagCuts.cxx:8
 AliRunTagCuts.cxx:9
 AliRunTagCuts.cxx:10
 AliRunTagCuts.cxx:11
 AliRunTagCuts.cxx:12
 AliRunTagCuts.cxx:13
 AliRunTagCuts.cxx:14
 AliRunTagCuts.cxx:15
 AliRunTagCuts.cxx:16
 AliRunTagCuts.cxx:17
 AliRunTagCuts.cxx:18
 AliRunTagCuts.cxx:19
 AliRunTagCuts.cxx:20
 AliRunTagCuts.cxx:21
 AliRunTagCuts.cxx:22
 AliRunTagCuts.cxx:23
 AliRunTagCuts.cxx:24
 AliRunTagCuts.cxx:25
 AliRunTagCuts.cxx:26
 AliRunTagCuts.cxx:27
 AliRunTagCuts.cxx:28
 AliRunTagCuts.cxx:29
 AliRunTagCuts.cxx:30
 AliRunTagCuts.cxx:31
 AliRunTagCuts.cxx:32
 AliRunTagCuts.cxx:33
 AliRunTagCuts.cxx:34
 AliRunTagCuts.cxx:35
 AliRunTagCuts.cxx:36
 AliRunTagCuts.cxx:37
 AliRunTagCuts.cxx:38
 AliRunTagCuts.cxx:39
 AliRunTagCuts.cxx:40
 AliRunTagCuts.cxx:41
 AliRunTagCuts.cxx:42
 AliRunTagCuts.cxx:43
 AliRunTagCuts.cxx:44
 AliRunTagCuts.cxx:45
 AliRunTagCuts.cxx:46
 AliRunTagCuts.cxx:47
 AliRunTagCuts.cxx:48
 AliRunTagCuts.cxx:49
 AliRunTagCuts.cxx:50
 AliRunTagCuts.cxx:51
 AliRunTagCuts.cxx:52
 AliRunTagCuts.cxx:53
 AliRunTagCuts.cxx:54
 AliRunTagCuts.cxx:55
 AliRunTagCuts.cxx:56
 AliRunTagCuts.cxx:57
 AliRunTagCuts.cxx:58
 AliRunTagCuts.cxx:59
 AliRunTagCuts.cxx:60
 AliRunTagCuts.cxx:61
 AliRunTagCuts.cxx:62
 AliRunTagCuts.cxx:63
 AliRunTagCuts.cxx:64
 AliRunTagCuts.cxx:65
 AliRunTagCuts.cxx:66
 AliRunTagCuts.cxx:67
 AliRunTagCuts.cxx:68
 AliRunTagCuts.cxx:69
 AliRunTagCuts.cxx:70
 AliRunTagCuts.cxx:71
 AliRunTagCuts.cxx:72
 AliRunTagCuts.cxx:73
 AliRunTagCuts.cxx:74
 AliRunTagCuts.cxx:75
 AliRunTagCuts.cxx:76
 AliRunTagCuts.cxx:77
 AliRunTagCuts.cxx:78
 AliRunTagCuts.cxx:79
 AliRunTagCuts.cxx:80
 AliRunTagCuts.cxx:81
 AliRunTagCuts.cxx:82
 AliRunTagCuts.cxx:83
 AliRunTagCuts.cxx:84
 AliRunTagCuts.cxx:85
 AliRunTagCuts.cxx:86
 AliRunTagCuts.cxx:87
 AliRunTagCuts.cxx:88
 AliRunTagCuts.cxx:89
 AliRunTagCuts.cxx:90
 AliRunTagCuts.cxx:91
 AliRunTagCuts.cxx:92
 AliRunTagCuts.cxx:93
 AliRunTagCuts.cxx:94
 AliRunTagCuts.cxx:95
 AliRunTagCuts.cxx:96
 AliRunTagCuts.cxx:97
 AliRunTagCuts.cxx:98
 AliRunTagCuts.cxx:99
 AliRunTagCuts.cxx:100
 AliRunTagCuts.cxx:101
 AliRunTagCuts.cxx:102
 AliRunTagCuts.cxx:103
 AliRunTagCuts.cxx:104
 AliRunTagCuts.cxx:105
 AliRunTagCuts.cxx:106
 AliRunTagCuts.cxx:107
 AliRunTagCuts.cxx:108
 AliRunTagCuts.cxx:109
 AliRunTagCuts.cxx:110
 AliRunTagCuts.cxx:111
 AliRunTagCuts.cxx:112
 AliRunTagCuts.cxx:113
 AliRunTagCuts.cxx:114
 AliRunTagCuts.cxx:115
 AliRunTagCuts.cxx:116
 AliRunTagCuts.cxx:117
 AliRunTagCuts.cxx:118
 AliRunTagCuts.cxx:119
 AliRunTagCuts.cxx:120
 AliRunTagCuts.cxx:121
 AliRunTagCuts.cxx:122
 AliRunTagCuts.cxx:123
 AliRunTagCuts.cxx:124
 AliRunTagCuts.cxx:125
 AliRunTagCuts.cxx:126
 AliRunTagCuts.cxx:127
 AliRunTagCuts.cxx:128
 AliRunTagCuts.cxx:129
 AliRunTagCuts.cxx:130
 AliRunTagCuts.cxx:131
 AliRunTagCuts.cxx:132
 AliRunTagCuts.cxx:133
 AliRunTagCuts.cxx:134
 AliRunTagCuts.cxx:135
 AliRunTagCuts.cxx:136
 AliRunTagCuts.cxx:137
 AliRunTagCuts.cxx:138
 AliRunTagCuts.cxx:139
 AliRunTagCuts.cxx:140
 AliRunTagCuts.cxx:141
 AliRunTagCuts.cxx:142
 AliRunTagCuts.cxx:143
 AliRunTagCuts.cxx:144
 AliRunTagCuts.cxx:145
 AliRunTagCuts.cxx:146
 AliRunTagCuts.cxx:147
 AliRunTagCuts.cxx:148
 AliRunTagCuts.cxx:149
 AliRunTagCuts.cxx:150
 AliRunTagCuts.cxx:151
 AliRunTagCuts.cxx:152
 AliRunTagCuts.cxx:153
 AliRunTagCuts.cxx:154
 AliRunTagCuts.cxx:155
 AliRunTagCuts.cxx:156
 AliRunTagCuts.cxx:157
 AliRunTagCuts.cxx:158
 AliRunTagCuts.cxx:159
 AliRunTagCuts.cxx:160
 AliRunTagCuts.cxx:161
 AliRunTagCuts.cxx:162
 AliRunTagCuts.cxx:163
 AliRunTagCuts.cxx:164
 AliRunTagCuts.cxx:165
 AliRunTagCuts.cxx:166
 AliRunTagCuts.cxx:167
 AliRunTagCuts.cxx:168
 AliRunTagCuts.cxx:169
 AliRunTagCuts.cxx:170
 AliRunTagCuts.cxx:171
 AliRunTagCuts.cxx:172
 AliRunTagCuts.cxx:173
 AliRunTagCuts.cxx:174
 AliRunTagCuts.cxx:175
 AliRunTagCuts.cxx:176
 AliRunTagCuts.cxx:177
 AliRunTagCuts.cxx:178
 AliRunTagCuts.cxx:179
 AliRunTagCuts.cxx:180
 AliRunTagCuts.cxx:181
 AliRunTagCuts.cxx:182
 AliRunTagCuts.cxx:183
 AliRunTagCuts.cxx:184
 AliRunTagCuts.cxx:185
 AliRunTagCuts.cxx:186
 AliRunTagCuts.cxx:187
 AliRunTagCuts.cxx:188
 AliRunTagCuts.cxx:189
 AliRunTagCuts.cxx:190
 AliRunTagCuts.cxx:191
 AliRunTagCuts.cxx:192
 AliRunTagCuts.cxx:193
 AliRunTagCuts.cxx:194
 AliRunTagCuts.cxx:195
 AliRunTagCuts.cxx:196
 AliRunTagCuts.cxx:197
 AliRunTagCuts.cxx:198
 AliRunTagCuts.cxx:199
 AliRunTagCuts.cxx:200
 AliRunTagCuts.cxx:201
 AliRunTagCuts.cxx:202
 AliRunTagCuts.cxx:203
 AliRunTagCuts.cxx:204
 AliRunTagCuts.cxx:205
 AliRunTagCuts.cxx:206
 AliRunTagCuts.cxx:207
 AliRunTagCuts.cxx:208
 AliRunTagCuts.cxx:209
 AliRunTagCuts.cxx:210
 AliRunTagCuts.cxx:211
 AliRunTagCuts.cxx:212
 AliRunTagCuts.cxx:213
 AliRunTagCuts.cxx:214
 AliRunTagCuts.cxx:215
 AliRunTagCuts.cxx:216
 AliRunTagCuts.cxx:217
 AliRunTagCuts.cxx:218
 AliRunTagCuts.cxx:219
 AliRunTagCuts.cxx:220
 AliRunTagCuts.cxx:221
 AliRunTagCuts.cxx:222
 AliRunTagCuts.cxx:223
 AliRunTagCuts.cxx:224
 AliRunTagCuts.cxx:225
 AliRunTagCuts.cxx:226
 AliRunTagCuts.cxx:227
 AliRunTagCuts.cxx:228
 AliRunTagCuts.cxx:229
 AliRunTagCuts.cxx:230
 AliRunTagCuts.cxx:231
 AliRunTagCuts.cxx:232
 AliRunTagCuts.cxx:233
 AliRunTagCuts.cxx:234
 AliRunTagCuts.cxx:235
 AliRunTagCuts.cxx:236
 AliRunTagCuts.cxx:237
 AliRunTagCuts.cxx:238
 AliRunTagCuts.cxx:239
 AliRunTagCuts.cxx:240
 AliRunTagCuts.cxx:241
 AliRunTagCuts.cxx:242
 AliRunTagCuts.cxx:243
 AliRunTagCuts.cxx:244
 AliRunTagCuts.cxx:245
 AliRunTagCuts.cxx:246
 AliRunTagCuts.cxx:247
 AliRunTagCuts.cxx:248
 AliRunTagCuts.cxx:249
 AliRunTagCuts.cxx:250
 AliRunTagCuts.cxx:251
 AliRunTagCuts.cxx:252
 AliRunTagCuts.cxx:253
 AliRunTagCuts.cxx:254
 AliRunTagCuts.cxx:255
 AliRunTagCuts.cxx:256
 AliRunTagCuts.cxx:257
 AliRunTagCuts.cxx:258
 AliRunTagCuts.cxx:259
 AliRunTagCuts.cxx:260
 AliRunTagCuts.cxx:261
 AliRunTagCuts.cxx:262
 AliRunTagCuts.cxx:263
 AliRunTagCuts.cxx:264
 AliRunTagCuts.cxx:265
 AliRunTagCuts.cxx:266
 AliRunTagCuts.cxx:267
 AliRunTagCuts.cxx:268
 AliRunTagCuts.cxx:269
 AliRunTagCuts.cxx:270
 AliRunTagCuts.cxx:271
 AliRunTagCuts.cxx:272
 AliRunTagCuts.cxx:273
 AliRunTagCuts.cxx:274
 AliRunTagCuts.cxx:275
 AliRunTagCuts.cxx:276
 AliRunTagCuts.cxx:277
 AliRunTagCuts.cxx:278
 AliRunTagCuts.cxx:279