1 ////////////////////////////////////////////////////////////////////////////////
3 // AliFemtoQAEventCut - the basic cut to check QA for event cuts. //
4 // Only cuts on event multiplicity and z-vertex position //
6 ////////////////////////////////////////////////////////////////////////////////
8 #include "AliFemtoQAEventCut.h"
12 ClassImp(AliFemtoQAEventCut)
15 AliFemtoQAEventCut::AliFemtoQAEventCut() :
19 fAcceptBadVertex(false),
23 fEventMultQASwitch(kFALSE),
24 fEventZPosQASwitch(kFALSE)
26 // Default constructor
28 fEventMult[1] = 100000;
29 fVertZPos[0] = -100.0;
33 fEventMultQASwitch = false;
34 fEventZPosQASwitch = false;
35 fEventMultQAExclusionZone[0] = 0;
36 fEventMultQAExclusionZone[1] = 100000;
37 fEventZPosQAExclusionZone[0] = -100.0;
38 fEventZPosQAExclusionZone[1] = 100.0;
41 //------------------------------
42 AliFemtoQAEventCut::~AliFemtoQAEventCut(){
45 //------------------------------
46 AliFemtoQAEventCut& AliFemtoQAEventCut::operator=(AliFemtoQAEventCut& c)
49 fEventMult[0] = c.fEventMult[0];
50 fEventMult[1] = c.fEventMult[1];
51 fVertZPos[0] = c.fVertZPos[0];
52 fVertZPos[1] = c.fVertZPos[1];
54 fHighOrLowSwitch = c.fHighOrLowSwitch;
55 fEventMultQASwitch = c.fEventMultQASwitch;
56 fEventZPosQASwitch = c.fEventZPosQASwitch;
57 fEventMultQAExclusionZone[0] = c.fEventMultQAExclusionZone[0];
58 fEventMultQAExclusionZone[1] = c.fEventMultQAExclusionZone[1];
59 fEventZPosQAExclusionZone[0] = c.fEventZPosQAExclusionZone[0];
60 fEventZPosQAExclusionZone[1] = c.fEventZPosQAExclusionZone[1];
65 //------------------------------
66 bool AliFemtoQAEventCut::Pass(const AliFemtoEvent* event){
67 // Pass events if they fall within the multiplicity and z-vertex
68 // position range. If QA cutting on quantity, pass if outside
69 // exclusion zone between low and high cut values. Fail otherwise.
70 int mult = event->NumberOfTracks();
71 double vertexZPos = event->PrimVertPos().z();
72 cout << "AliFemtoQAEventCut:: mult: " << fEventMult[0] << " < " << mult << " < " << fEventMult[1] << endl;
73 cout << "AliFemtoQAEventCut:: VertexZPos: " << fVertZPos[0] << " < " << vertexZPos << " < " << fVertZPos[1] << endl;
77 if (fEventMultQASwitch) {
79 ( (((mult < fEventMultQAExclusionZone[0]) && (fHighOrLowSwitch > 0)) ||
80 ((mult > fEventMultQAExclusionZone[1]) && (fHighOrLowSwitch < 0))) &&
81 (mult > fEventMult[0]) &&
82 (mult < fEventMult[1]) &&
83 (vertexZPos > fVertZPos[0]) &&
84 (vertexZPos < fVertZPos[1]) &&
85 (fAcceptBadVertex || (event->PrimVertCov()[4] > -1000.0)));
87 else if (fEventZPosQASwitch) {
89 ((((vertexZPos < fEventZPosQAExclusionZone[0]) && (fHighOrLowSwitch > 0)) ||
90 ((vertexZPos > fEventZPosQAExclusionZone[1]) && (fHighOrLowSwitch < 0))) &&
91 (mult > fEventMult[0]) &&
92 (mult < fEventMult[1]) &&
93 (vertexZPos > fVertZPos[0]) &&
94 (vertexZPos < fVertZPos[1]) &&
95 (fAcceptBadVertex || (event->PrimVertCov()[4] > -1000.0)));
99 ((mult > fEventMult[0]) &&
100 (mult < fEventMult[1]) &&
101 (vertexZPos > fVertZPos[0]) &&
102 (vertexZPos < fVertZPos[1]) &&
103 (fAcceptBadVertex || (event->PrimVertCov()[4] > -1000.0)));
106 if (goodEvent) fHighOrLowSwitch *= -1;
107 goodEvent ? fNEventsPassed++ : fNEventsFailed++ ;
108 //cout << "AliFemtoQAEventCut:: return : " << goodEvent << endl;
111 //------------------------------
112 AliFemtoString AliFemtoQAEventCut::Report(){
116 snprintf(ctemp , 100, "\nMultiplicity:\t %d-%d",fEventMult[0],fEventMult[1]);
118 snprintf(ctemp , 100, "\nVertex Z-position:\t %E-%E",fVertZPos[0],fVertZPos[1]);
120 snprintf(ctemp , 100, "\nNumber of events which passed:\t%ld Number which failed:\t%ld",fNEventsPassed,fNEventsFailed);
122 AliFemtoString returnThis = stemp;
125 void AliFemtoQAEventCut::SetAcceptBadVertex(bool b)
127 fAcceptBadVertex = b;
129 bool AliFemtoQAEventCut::GetAcceptBadVertex()
131 return fAcceptBadVertex;