ROOT logo
//
// Class AliRsnCutEventUtils
//
// This cut implementation checks the quality of event primary vertex.
// It currently works only with ESD events (not AOD).
//
// authors: Martin Vala (martin.vala@cern.ch)
//          Alberto Pulvirenti (alberto.pulvirenti@ct.infn.it)
//

#include "AliRsnCutEventUtils.h"
#include "AliAnalysisUtils.h"

ClassImp(AliRsnCutEventUtils)

//_________________________________________________________________________________________________
AliRsnCutEventUtils::AliRsnCutEventUtils(const char *name, Bool_t rmFirstEvInChunck, Bool_t checkPileUppA2013) :
AliRsnCut(name, AliRsnCut::kEvent),
  fIsRmFirstEvInChunck(rmFirstEvInChunck),
  fCheckPileUppA2013(checkPileUppA2013),
  fUseMVPlpSelection(kFALSE),
  fMinPlpContribMV(5),
  fMinPlpContribSPD(5),
  fUseVertexSelection2013pA(kFALSE),
  fUtils(0x0)
{
  //
  // Main constructor.
  //This class is mainly used for pPb 2013 
  //If the rmFirstEvInChunck flag is kTRUE, it removed the first event in chunk
  //
  //If the checkPileUp flag is kTRUE, it removes the events from pile-up
  //- to be used for pA 2013, for other periods the rejection of pileup is implemented 
  //ad an additional cut in the primary vertex
  
}

//_________________________________________________________________________________________________
AliRsnCutEventUtils::AliRsnCutEventUtils(const AliRsnCutEventUtils &copy) :
  AliRsnCut(copy),
  fIsRmFirstEvInChunck(copy.fIsRmFirstEvInChunck),
  fCheckPileUppA2013(copy.fCheckPileUppA2013),
  fUseMVPlpSelection(copy.fUseMVPlpSelection),
  fMinPlpContribMV(copy.fMinPlpContribMV),
  fMinPlpContribSPD(copy.fMinPlpContribSPD),
  fUseVertexSelection2013pA(copy.fUseVertexSelection2013pA),
  fUtils(copy.fUtils)
{
  //
  // Copy constructor.
  //
}

//-------------------------------------------------------------------------------------------------
AliRsnCutEventUtils &AliRsnCutEventUtils::operator=(const AliRsnCutEventUtils &copy)
{
  //
  // Assignment operator.
  // Works like copy constructor.
  //
  AliRsnCut::operator=(copy);
  if (this == &copy)
    return *this;
  
  fIsRmFirstEvInChunck=copy.fIsRmFirstEvInChunck;
  fCheckPileUppA2013=copy.fCheckPileUppA2013;
  fUseMVPlpSelection=copy.fUseMVPlpSelection;
  fMinPlpContribMV=copy.fMinPlpContribMV;
  fMinPlpContribSPD=copy.fMinPlpContribSPD;
  fUseVertexSelection2013pA=copy.fUseVertexSelection2013pA;

  fUtils=copy.fUtils;
	
    return (*this);
}
//_________________________________________________________________________________________________
Bool_t AliRsnCutEventUtils::IsSelected(TObject *object)
{
//
// Cut checker
//
   // coherence check
   // which also fills data member objects
   if (!TargetOK(object)) return kFALSE;

   // retrieve event
   AliVEvent *vevt = dynamic_cast<AliVEvent *>(fEvent->GetRef());
   fUtils = new AliAnalysisUtils();
   fUtils->SetUseMVPlpSelection(fUseMVPlpSelection);
   fUtils->SetMinPlpContribMV(fMinPlpContribMV);
   fUtils->SetMinPlpContribSPD(fMinPlpContribSPD);

   // pile-up check
   if ((fCheckPileUppA2013) && (fUtils->IsPileUpEvent(vevt)))
     return kFALSE;
  
   //remove first event in chunk 
   if ((fIsRmFirstEvInChunck) && (fUtils->IsFirstEventInChunk(vevt)))
     return kFALSE;
   
   //apply vertex selection - for 2013 pPb data
   if((fUseVertexSelection2013pA) && (!fUtils->IsVertexSelected2013pA(vevt)))
      return kFALSE;
 
   return kTRUE;
}
 AliRsnCutEventUtils.cxx:1
 AliRsnCutEventUtils.cxx:2
 AliRsnCutEventUtils.cxx:3
 AliRsnCutEventUtils.cxx:4
 AliRsnCutEventUtils.cxx:5
 AliRsnCutEventUtils.cxx:6
 AliRsnCutEventUtils.cxx:7
 AliRsnCutEventUtils.cxx:8
 AliRsnCutEventUtils.cxx:9
 AliRsnCutEventUtils.cxx:10
 AliRsnCutEventUtils.cxx:11
 AliRsnCutEventUtils.cxx:12
 AliRsnCutEventUtils.cxx:13
 AliRsnCutEventUtils.cxx:14
 AliRsnCutEventUtils.cxx:15
 AliRsnCutEventUtils.cxx:16
 AliRsnCutEventUtils.cxx:17
 AliRsnCutEventUtils.cxx:18
 AliRsnCutEventUtils.cxx:19
 AliRsnCutEventUtils.cxx:20
 AliRsnCutEventUtils.cxx:21
 AliRsnCutEventUtils.cxx:22
 AliRsnCutEventUtils.cxx:23
 AliRsnCutEventUtils.cxx:24
 AliRsnCutEventUtils.cxx:25
 AliRsnCutEventUtils.cxx:26
 AliRsnCutEventUtils.cxx:27
 AliRsnCutEventUtils.cxx:28
 AliRsnCutEventUtils.cxx:29
 AliRsnCutEventUtils.cxx:30
 AliRsnCutEventUtils.cxx:31
 AliRsnCutEventUtils.cxx:32
 AliRsnCutEventUtils.cxx:33
 AliRsnCutEventUtils.cxx:34
 AliRsnCutEventUtils.cxx:35
 AliRsnCutEventUtils.cxx:36
 AliRsnCutEventUtils.cxx:37
 AliRsnCutEventUtils.cxx:38
 AliRsnCutEventUtils.cxx:39
 AliRsnCutEventUtils.cxx:40
 AliRsnCutEventUtils.cxx:41
 AliRsnCutEventUtils.cxx:42
 AliRsnCutEventUtils.cxx:43
 AliRsnCutEventUtils.cxx:44
 AliRsnCutEventUtils.cxx:45
 AliRsnCutEventUtils.cxx:46
 AliRsnCutEventUtils.cxx:47
 AliRsnCutEventUtils.cxx:48
 AliRsnCutEventUtils.cxx:49
 AliRsnCutEventUtils.cxx:50
 AliRsnCutEventUtils.cxx:51
 AliRsnCutEventUtils.cxx:52
 AliRsnCutEventUtils.cxx:53
 AliRsnCutEventUtils.cxx:54
 AliRsnCutEventUtils.cxx:55
 AliRsnCutEventUtils.cxx:56
 AliRsnCutEventUtils.cxx:57
 AliRsnCutEventUtils.cxx:58
 AliRsnCutEventUtils.cxx:59
 AliRsnCutEventUtils.cxx:60
 AliRsnCutEventUtils.cxx:61
 AliRsnCutEventUtils.cxx:62
 AliRsnCutEventUtils.cxx:63
 AliRsnCutEventUtils.cxx:64
 AliRsnCutEventUtils.cxx:65
 AliRsnCutEventUtils.cxx:66
 AliRsnCutEventUtils.cxx:67
 AliRsnCutEventUtils.cxx:68
 AliRsnCutEventUtils.cxx:69
 AliRsnCutEventUtils.cxx:70
 AliRsnCutEventUtils.cxx:71
 AliRsnCutEventUtils.cxx:72
 AliRsnCutEventUtils.cxx:73
 AliRsnCutEventUtils.cxx:74
 AliRsnCutEventUtils.cxx:75
 AliRsnCutEventUtils.cxx:76
 AliRsnCutEventUtils.cxx:77
 AliRsnCutEventUtils.cxx:78
 AliRsnCutEventUtils.cxx:79
 AliRsnCutEventUtils.cxx:80
 AliRsnCutEventUtils.cxx:81
 AliRsnCutEventUtils.cxx:82
 AliRsnCutEventUtils.cxx:83
 AliRsnCutEventUtils.cxx:84
 AliRsnCutEventUtils.cxx:85
 AliRsnCutEventUtils.cxx:86
 AliRsnCutEventUtils.cxx:87
 AliRsnCutEventUtils.cxx:88
 AliRsnCutEventUtils.cxx:89
 AliRsnCutEventUtils.cxx:90
 AliRsnCutEventUtils.cxx:91
 AliRsnCutEventUtils.cxx:92
 AliRsnCutEventUtils.cxx:93
 AliRsnCutEventUtils.cxx:94
 AliRsnCutEventUtils.cxx:95
 AliRsnCutEventUtils.cxx:96
 AliRsnCutEventUtils.cxx:97
 AliRsnCutEventUtils.cxx:98
 AliRsnCutEventUtils.cxx:99
 AliRsnCutEventUtils.cxx:100
 AliRsnCutEventUtils.cxx:101
 AliRsnCutEventUtils.cxx:102
 AliRsnCutEventUtils.cxx:103
 AliRsnCutEventUtils.cxx:104
 AliRsnCutEventUtils.cxx:105
 AliRsnCutEventUtils.cxx:106