ROOT logo
////////////////////////////////////////////////////////////////////////////////
//                                                                            //
// AliFemtoBasicEventCut - the basic cut for events.                          //
// Only cuts on event multiplicity and z-vertex position                      //
//                                                                            //
////////////////////////////////////////////////////////////////////////////////

#include "AliFemtoBasicEventCut.h"
//#include <cstdio>

#ifdef __ROOT__
ClassImp(AliFemtoBasicEventCut)
#endif

AliFemtoBasicEventCut::AliFemtoBasicEventCut() :
  AliFemtoEventCut(),
  fEventMult(),
  fVertZPos(),
  fAcceptBadVertex(false), 
  fNEventsPassed(0), 
  fNEventsFailed(0),
  fSelectTrigger(0)
{
  // Default constructor
  fEventMult[0] = 0;
  fEventMult[1] = 100000;
  fVertZPos[0] = -100.0;
  fVertZPos[1] = 100.0;
  fPsiEP[0] = -1000.0;
  fPsiEP[1] = 1000.0;
} 
//------------------------------
AliFemtoBasicEventCut::~AliFemtoBasicEventCut(){
  // Default destructor
}
//------------------------------
bool AliFemtoBasicEventCut::Pass(const AliFemtoEvent* event){  

  // Pass events if they fall within the multiplicity and z-vertex
  // position range. Fail otherwise
  //  int mult =  event->NumberOfTracks();
  int mult = (int) event->UncorrectedNumberOfPrimaries();
  double vertexZPos = event->PrimVertPos().z();

  // Double_t qxEPVZERO = 0, qyEPVZERO = 0;
  // Double_t qVZERO = -999;
  double epvzero = event->ReactionPlaneAngle();

  // cout << "AliFemtoBasicEventCut:: epvzero:       " << fPsiEP[0] << " < " << epvzero << " < " << fPsiEP[1] << endl;
//   cout << "AliFemtoBasicEventCut:: mult:       " << fEventMult[0] << " < " << mult << " < " << fEventMult[1] << endl;
//   cout << "AliFemtoBasicEventCut:: VertexZPos: " << fVertZPos[0] << " < " << vertexZPos << " < " << fVertZPos[1] << endl;
//   cout << "AliFemtoBasicEventCut:: VertexZErr: " << event->PrimVertCov()[4] << endl;

  // cout << "AliFemtoBasicEventCut:: MagneticField: " << event->MagneticField() << endl;
  // cout << "AliFemtoBasicEventCut:: IsCollisionCandidate: " << event->IsCollisionCandidate() << endl;
  // cout << "AliFemtoBasicEventCut:: TriggerCluster: " << event->TriggerCluster() << endl;
  // cout << "AliFemtoBasicEventCut:: fSelectTrigger: " << fSelectTrigger << endl;
  // cout << "AliFemtoBasicEventCut:: " << endl;
  bool goodEvent =
    ((mult >= fEventMult[0]) && 
     (mult <= fEventMult[1]) && 
     (vertexZPos > fVertZPos[0]) &&
     (vertexZPos < fVertZPos[1]) &&
     (epvzero > fPsiEP[0]) &&
     (epvzero < fPsiEP[1]) &&
     ((!fAcceptBadVertex) || (event->ZDCParticipants() > 1.0)) &&
      ((!fSelectTrigger) || (event->TriggerCluster() == fSelectTrigger))
);

  // cout << "AliFemtoBasicEventCut:: goodEvent" <<goodEvent << endl;

  goodEvent ? fNEventsPassed++ : fNEventsFailed++ ;
  // cout << "AliFemtoBasicEventCut:: return : " << goodEvent << endl;
//     (fAcceptBadVertex || (event->PrimVertCov()[4] > -1000.0)) &&

  return (goodEvent);
}
//------------------------------
AliFemtoString AliFemtoBasicEventCut::Report(){
  // Prepare report
  string stemp;
  char ctemp[100];
  snprintf(ctemp , 100, "\nMultiplicity:\t %d-%d",fEventMult[0],fEventMult[1]);
  stemp = ctemp;
  snprintf(ctemp , 100, "\nVertex Z-position:\t %E-%E",fVertZPos[0],fVertZPos[1]);
  stemp += ctemp;
  snprintf(ctemp , 100, "\nNumber of events which passed:\t%ld  Number which failed:\t%ld",fNEventsPassed,fNEventsFailed);
  stemp += ctemp;
  AliFemtoString returnThis = stemp;
  return returnThis;
}
void AliFemtoBasicEventCut::SetAcceptBadVertex(bool b)
{
  fAcceptBadVertex = b;
}
bool AliFemtoBasicEventCut::GetAcceptBadVertex()
{
  return fAcceptBadVertex;
}

 AliFemtoBasicEventCut.cxx:1
 AliFemtoBasicEventCut.cxx:2
 AliFemtoBasicEventCut.cxx:3
 AliFemtoBasicEventCut.cxx:4
 AliFemtoBasicEventCut.cxx:5
 AliFemtoBasicEventCut.cxx:6
 AliFemtoBasicEventCut.cxx:7
 AliFemtoBasicEventCut.cxx:8
 AliFemtoBasicEventCut.cxx:9
 AliFemtoBasicEventCut.cxx:10
 AliFemtoBasicEventCut.cxx:11
 AliFemtoBasicEventCut.cxx:12
 AliFemtoBasicEventCut.cxx:13
 AliFemtoBasicEventCut.cxx:14
 AliFemtoBasicEventCut.cxx:15
 AliFemtoBasicEventCut.cxx:16
 AliFemtoBasicEventCut.cxx:17
 AliFemtoBasicEventCut.cxx:18
 AliFemtoBasicEventCut.cxx:19
 AliFemtoBasicEventCut.cxx:20
 AliFemtoBasicEventCut.cxx:21
 AliFemtoBasicEventCut.cxx:22
 AliFemtoBasicEventCut.cxx:23
 AliFemtoBasicEventCut.cxx:24
 AliFemtoBasicEventCut.cxx:25
 AliFemtoBasicEventCut.cxx:26
 AliFemtoBasicEventCut.cxx:27
 AliFemtoBasicEventCut.cxx:28
 AliFemtoBasicEventCut.cxx:29
 AliFemtoBasicEventCut.cxx:30
 AliFemtoBasicEventCut.cxx:31
 AliFemtoBasicEventCut.cxx:32
 AliFemtoBasicEventCut.cxx:33
 AliFemtoBasicEventCut.cxx:34
 AliFemtoBasicEventCut.cxx:35
 AliFemtoBasicEventCut.cxx:36
 AliFemtoBasicEventCut.cxx:37
 AliFemtoBasicEventCut.cxx:38
 AliFemtoBasicEventCut.cxx:39
 AliFemtoBasicEventCut.cxx:40
 AliFemtoBasicEventCut.cxx:41
 AliFemtoBasicEventCut.cxx:42
 AliFemtoBasicEventCut.cxx:43
 AliFemtoBasicEventCut.cxx:44
 AliFemtoBasicEventCut.cxx:45
 AliFemtoBasicEventCut.cxx:46
 AliFemtoBasicEventCut.cxx:47
 AliFemtoBasicEventCut.cxx:48
 AliFemtoBasicEventCut.cxx:49
 AliFemtoBasicEventCut.cxx:50
 AliFemtoBasicEventCut.cxx:51
 AliFemtoBasicEventCut.cxx:52
 AliFemtoBasicEventCut.cxx:53
 AliFemtoBasicEventCut.cxx:54
 AliFemtoBasicEventCut.cxx:55
 AliFemtoBasicEventCut.cxx:56
 AliFemtoBasicEventCut.cxx:57
 AliFemtoBasicEventCut.cxx:58
 AliFemtoBasicEventCut.cxx:59
 AliFemtoBasicEventCut.cxx:60
 AliFemtoBasicEventCut.cxx:61
 AliFemtoBasicEventCut.cxx:62
 AliFemtoBasicEventCut.cxx:63
 AliFemtoBasicEventCut.cxx:64
 AliFemtoBasicEventCut.cxx:65
 AliFemtoBasicEventCut.cxx:66
 AliFemtoBasicEventCut.cxx:67
 AliFemtoBasicEventCut.cxx:68
 AliFemtoBasicEventCut.cxx:69
 AliFemtoBasicEventCut.cxx:70
 AliFemtoBasicEventCut.cxx:71
 AliFemtoBasicEventCut.cxx:72
 AliFemtoBasicEventCut.cxx:73
 AliFemtoBasicEventCut.cxx:74
 AliFemtoBasicEventCut.cxx:75
 AliFemtoBasicEventCut.cxx:76
 AliFemtoBasicEventCut.cxx:77
 AliFemtoBasicEventCut.cxx:78
 AliFemtoBasicEventCut.cxx:79
 AliFemtoBasicEventCut.cxx:80
 AliFemtoBasicEventCut.cxx:81
 AliFemtoBasicEventCut.cxx:82
 AliFemtoBasicEventCut.cxx:83
 AliFemtoBasicEventCut.cxx:84
 AliFemtoBasicEventCut.cxx:85
 AliFemtoBasicEventCut.cxx:86
 AliFemtoBasicEventCut.cxx:87
 AliFemtoBasicEventCut.cxx:88
 AliFemtoBasicEventCut.cxx:89
 AliFemtoBasicEventCut.cxx:90
 AliFemtoBasicEventCut.cxx:91
 AliFemtoBasicEventCut.cxx:92
 AliFemtoBasicEventCut.cxx:93
 AliFemtoBasicEventCut.cxx:94
 AliFemtoBasicEventCut.cxx:95
 AliFemtoBasicEventCut.cxx:96
 AliFemtoBasicEventCut.cxx:97
 AliFemtoBasicEventCut.cxx:98
 AliFemtoBasicEventCut.cxx:99
 AliFemtoBasicEventCut.cxx:100