AliFemtoK0Analysis::AliFemtoK0Analysis():\r
AliAnalysisTaskSE(),\r
fFieldPos(kTRUE),\r
+ fOnlineCase(kTRUE),\r
+ fMeritCase(kTRUE),\r
fEventCount(0),\r
fEC(0x0),\r
fEvt(0X0),\r
{\r
}\r
//________________________________________________________________________\r
-AliFemtoK0Analysis::AliFemtoK0Analysis(const char *name, bool FieldPositive) \r
+AliFemtoK0Analysis::AliFemtoK0Analysis(const char *name, bool FieldPositive, bool OnlineCase, bool MeritCase) \r
: AliAnalysisTaskSE(name), \r
fFieldPos(FieldPositive),\r
+ fOnlineCase(OnlineCase),\r
+ fMeritCase(MeritCase),\r
fEventCount(0),\r
fEC(0x0),\r
fEvt(0X0),\r
fNegDaughter2(0x0)\r
{\r
//main constructor\r
- fFieldPos = FieldPositive;\r
+ fFieldPos = FieldPositive;\r
+ fOnlineCase = OnlineCase;\r
+ fMeritCase = MeritCase;\r
// Define output slots here \r
// Output slot #1\r
DefineOutput(1, TList::Class());\r
AliFemtoK0Analysis::AliFemtoK0Analysis(const AliFemtoK0Analysis &obj)\r
: AliAnalysisTaskSE(obj.fName),\r
fFieldPos(obj.fFieldPos),\r
+ fOnlineCase(obj.fOnlineCase),\r
+ fMeritCase(obj.fMeritCase),\r
fEventCount(obj.fEventCount),\r
fEC(obj.fEC),\r
fEvt(obj.fEvt),\r
//Assignment operator\r
if (this == &obj) return *this;\r
\r
- fFieldPos = obj.fFieldPos;\r
- fEventCount = obj.fEventCount;\r
- fEC = obj.fEC;\r
- fEvt = obj.fEvt;\r
- fRandomNumber = obj.fRandomNumber;\r
- fName = obj.fName;\r
- fAOD = obj.fAOD;\r
- fOutputList = obj.fOutputList;\r
- fPidAOD = obj.fPidAOD;\r
- fPidESD = obj.fPidESD;\r
- fPosDaughter1 = obj.fPosDaughter1; \r
- fPosDaughter2 = obj.fPosDaughter2;\r
- fNegDaughter1 = obj.fNegDaughter1;\r
- fNegDaughter2 = obj.fNegDaughter2;\r
+ fFieldPos = obj.fFieldPos;\r
+ fOnlineCase = obj.fOnlineCase;\r
+ fMeritCase = obj.fMeritCase;\r
+ fEventCount = obj.fEventCount;\r
+ fEC = obj.fEC;\r
+ fEvt = obj.fEvt;\r
+ fRandomNumber = obj.fRandomNumber;\r
+ fName = obj.fName;\r
+ fAOD = obj.fAOD;\r
+ fOutputList = obj.fOutputList;\r
+ fPidAOD = obj.fPidAOD;\r
+ fPidESD = obj.fPidESD;\r
+ fPosDaughter1 = obj.fPosDaughter1; \r
+ fPosDaughter2 = obj.fPosDaughter2;\r
+ fNegDaughter1 = obj.fNegDaughter1;\r
+ fNegDaughter2 = obj.fNegDaughter2;\r
\r
return (*this);\r
}\r
//fPidAOD = new AliAODpidUtil();\r
AliAODInputHandler *aodH = dynamic_cast<AliAODInputHandler*>(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());\r
fPidAOD = aodH->GetAODpidUtil();\r
+ //fPidAOD = aodH->GetPIDResponse();\r
fPidESD = new AliESDpid();\r
\r
fPosDaughter1 = new AliESDtrack();\r
//load v0 track\r
AliAODv0* v0 = fAOD->GetV0(i);\r
if(!v0) continue;\r
- if(!(v0->GetOnFlyStatus())) continue; //for online\r
- //if((v0->GetOnFlyStatus())) continue; //for offline\r
-\r
+ if(fOnlineCase){\r
+ if(!(v0->GetOnFlyStatus())) continue;\r
+ } //for online\r
+ else{\r
+ if((v0->GetOnFlyStatus())) continue; //for offline\r
+ }\r
+ \r
//for on-the-fly ordering\r
AliAODTrack* tempTrack = (AliAODTrack*)v0->GetDaughter(0);\r
short int pos0or1;\r
\r
//Check for shared daughters, using v0 DCA to judge\r
tempK0[v0Count].fSkipShared = kFALSE;\r
- for(int iID = 0; iID<v0Count; iID++){\r
- if(tempK0[iID].fSkipShared == kFALSE){\r
- if(tempK0[iID].fDaughterID1 == prongTrackPos->GetID() || tempK0[iID].fDaughterID2 == prongTrackNeg->GetID()){\r
- if(tempK0[iID].fV0Dca <= v0Dca){ //if old beats new\r
- tempK0[v0Count].fSkipShared = kTRUE; //skip new\r
- break; //no need to keep checking others\r
- }\r
- else{//new beats old\r
- tempK0[iID].fSkipShared = kTRUE; //skip old \r
- k0Count--;} //subtract from number of K0s (new one will be added later, if it succeeds)\r
+ if(fMeritCase){\r
+ for(int iID = 0; iID<v0Count; iID++){\r
+ if(tempK0[iID].fSkipShared == kFALSE){\r
+ if(tempK0[iID].fDaughterID1 == prongTrackPos->GetID() || tempK0[iID].fDaughterID2 == prongTrackNeg->GetID()){\r
+ if(tempK0[iID].fV0Dca <= v0Dca){ //if old beats new\r
+ tempK0[v0Count].fSkipShared = kTRUE; //skip new\r
+ break; //no need to keep checking others\r
+ }\r
+ else{//new beats old\r
+ tempK0[iID].fSkipShared = kTRUE; //skip old \r
+ k0Count--;} //subtract from number of K0s (new one will be added later, if it succeeds)\r
+ }\r
}\r
}\r
- }\r
- if(tempK0[v0Count].fSkipShared) continue; \r
- \r
+ if(tempK0[v0Count].fSkipShared) continue;\r
+ }//if MeritCase \r
+ \r
//load parameters into temporary class instance\r
if(v0Count < kMaxNumK0)\r
{\r
//pt2 = (fEvt+evnum)->fK0Particle[j].fPt;\r
\r
pairPx = px1 + px2;\r
+\r
pairPy = py1 + py2;\r
pairPz = pz1 + pz2;\r
pairKt = sqrt(pairPx*pairPx + pairPy*pairPy)/2.;\r