#include "AliAnalysisMuMuCutElement.h"
#include "TMethodCall.h"
#include "AliLog.h"
#include "Riostream.h"
#include "AliVParticle.h"
ClassImp(AliAnalysisMuMuCutElement)
ClassImp(AliAnalysisMuMuCutElementBar)
AliAnalysisMuMuCutElement::AliAnalysisMuMuCutElement()
: TObject(), fName(""), fIsEventCutter(kFALSE), fIsEventHandlerCutter(kFALSE),
fIsTrackCutter(kFALSE), fIsTrackPairCutter(kFALSE), fIsTriggerClassCutter(kFALSE),
fCutObject(0x0), fCutMethodName(""), fCutMethodPrototype(""),
fDefaultParameters(""), fNofParams(0), fCutMethod(0x0), fCallParams(), fDoubleParams()
{
}
AliAnalysisMuMuCutElement::AliAnalysisMuMuCutElement(ECutType expectedType,
TObject& cutObject,
const char* cutMethodName,
const char* cutMethodPrototype,
const char* defaultParameters)
: TObject(), fName(""), fIsEventCutter(kFALSE), fIsEventHandlerCutter(kFALSE),
fIsTrackCutter(kFALSE), fIsTrackPairCutter(kFALSE), fIsTriggerClassCutter(kFALSE),
fCutObject(&cutObject), fCutMethodName(cutMethodName),
fCutMethodPrototype(cutMethodPrototype),fDefaultParameters(defaultParameters),
fNofParams(0), fCutMethod(0x0), fCallParams(), fDoubleParams()
{
Init(expectedType);
}
AliAnalysisMuMuCutElement::~AliAnalysisMuMuCutElement()
{
delete fCutMethod;
}
Bool_t AliAnalysisMuMuCutElement::CallCutMethod(Long_t p) const
{
if (!fCutMethod)
{
Init();
if (!fCutMethod) return kFALSE;
}
fCallParams[0] = p;
fCutMethod->SetParamPtrs(&fCallParams[0]);
Long_t result;
fCutMethod->Execute(fCutObject,result);
return (result!=0);
}
Bool_t AliAnalysisMuMuCutElement::CallCutMethod(Long_t p1, Long_t p2) const
{
if (!fCutMethod)
{
Init();
if (!fCutMethod) return kFALSE;
}
fCallParams[0] = p1;
fCallParams[1] = p2;
fCutMethod->SetParamPtrs(&fCallParams[0]);
Long_t result;
fCutMethod->Execute(fCutObject,result);
return (result!=0);
}
Int_t AliAnalysisMuMuCutElement::CountOccurences(const TString& prototype, const char* search) const
{
TObjArray* a = prototype.Tokenize(",");
TObjString* str;
TIter next(a);
Int_t n(0);
while ( ( str = static_cast<TObjString*>(next()) ) )
{
if ( str->String().Contains(search) )
{
++n;
}
}
delete a;
return n;
}
const char* AliAnalysisMuMuCutElement::CutTypeName(ECutType type)
{
if ( type == kEvent )
{
return "Event";
}
if ( type == kTrack )
{
return "Track";
}
if ( type == kTrackPair )
{
return "TrackPair";
}
if ( type == kTriggerClass )
{
return "TriggerClass";
}
return "Any";
}
const char* AliAnalysisMuMuCutElement::GetCallMethodName() const
{
return ( fCutMethod ? fCutMethod->GetMethodName() : "");
}
const char* AliAnalysisMuMuCutElement::GetCallMethodProto() const
{
return ( fCutMethod ? fCutMethod->GetProto() : "");
}
void AliAnalysisMuMuCutElement::Init(ECutType expectedType) const
{
TString scutMethodPrototype(fCutMethodPrototype);
TObjArray* tmp = fCutMethodPrototype.Tokenize(",");
fNofParams = tmp->GetEntries();
delete tmp;
Int_t nVEvent = CountOccurences(fCutMethodPrototype,"AliVEvent");
Int_t nVEventHandler = CountOccurences(fCutMethodPrototype,"AliVEventHandler") + CountOccurences(fCutMethodPrototype,"AliInputEventHandler");
Int_t nparticles = CountOccurences(fCutMethodPrototype,"AliVParticle");
Int_t nstrings = CountOccurences(fCutMethodPrototype,"TString");
if ( expectedType == kEvent && ( nVEvent == 0 && nVEventHandler == 0 ) )
{
AliError(Form("Cut not of the expected %s type : did not find required prototype arguments AliVEvent, AliVEventHandler or AliInputEventHandler",CutTypeName(kEvent)));
return;
}
if ( expectedType == kTrack && ( nparticles != 1 ) )
{
AliError(Form("Cut not of the expected %s type : did not find the required prototype argument AliVParticle (one and only one required)",CutTypeName(kTrack)));
return;
}
if ( expectedType == kTrackPair && ( nparticles != 2 ) )
{
AliError(Form("Cut not of the expected %s type : did not find the required prototype arguments AliVParticle (2 of them required)",CutTypeName(kTrackPair)));
return;
}
if ( expectedType == kTriggerClass && ( nstrings != 2 ) )
{
AliError(Form("Cut not of the expected %stype : did not find the required prototype arguments TString& (2 of them required)",CutTypeName(kTriggerClass)));
return;
}
scutMethodPrototype.ReplaceAll(" ","");
fCutMethod = new TMethodCall;
fCutMethod->InitWithPrototype(fCutObject->IsA(),fCutMethodName.Data(),scutMethodPrototype.Data());
if (!fCutMethod->IsValid())
{
AliError(Form("Could not find method %s(%s) in class %s",fCutMethodName.Data(),
scutMethodPrototype.Data(),fCutObject->ClassName()));
delete fCutMethod;
fCutMethod=0x0;
return;
}
TMethodCall nameOfMethod;
TString prototype("TString&");
Int_t nMainPar = 0;
if ( scutMethodPrototype.Contains("AliVEvent") )
{
fIsEventCutter=kTRUE;
++nMainPar;
}
if ( scutMethodPrototype.Contains("AliInputEventHandler") || scutMethodPrototype.Contains("AliVEventHandler") )
{
fIsEventHandlerCutter=kTRUE;
++nMainPar;
}
if ( nMainPar > 1 )
{
AliError(Form("Got an invalid prototype %s (more than one main parameter)",scutMethodPrototype.Data()));
delete fCutMethod;
fCutMethod=0x0;
return;
}
if ( nparticles == 1 )
{
fIsTrackCutter=kTRUE;
}
else if ( nparticles == 2 )
{
fIsTrackPairCutter=kTRUE;
}
else if ( nstrings == 2 )
{
fIsTriggerClassCutter = kTRUE;
}
nMainPar += nparticles;
nMainPar += nstrings;
if ( nMainPar > 2 )
{
AliError(Form("Got an invalid prototype %s (more than two main parameters)",scutMethodPrototype.Data()));
delete fCutMethod;
fCutMethod=0x0;
return;
}
if ( nMainPar == 0 )
{
AliError(Form("Got an invalid prototype %s (no main parameter found)",scutMethodPrototype.Data()));
delete fCutMethod;
fCutMethod=0x0;
return;
}
if ( !fIsTriggerClassCutter )
{
scutMethodPrototype.ReplaceAll("const AliVEvent&","");
scutMethodPrototype.ReplaceAll("const AliVParticle&","");
scutMethodPrototype.ReplaceAll("const AliInputEventHandler&","");
scutMethodPrototype.ReplaceAll("const AliVEventHandler&","");
prototype += scutMethodPrototype;
nameOfMethod.InitWithPrototype(fCutObject->IsA(),Form("NameOf%s",fCutMethodName.Data()),prototype);
if (!nameOfMethod.IsValid())
{
AliError(Form("Could not find method NameOf%s(%s) in class %s",fCutMethodName.Data(),
prototype.Data(),fCutObject->ClassName()));
delete fCutMethod;
fCutMethod=0x0;
return;
}
prototype.ReplaceAll("TString&","");
TObjArray* paramTypes = prototype.Tokenize(",");
TObjArray* paramValues = fDefaultParameters.Tokenize(",");
fDoubleParams.resize(paramValues->GetEntries());
Int_t nparams = paramValues->GetEntries();
fCallParams.resize(nparams+nMainPar);
if ( nMainPar == 2 )
{
fCallParams[0] = 0;
fCallParams[1] = reinterpret_cast<Long_t>(&fName);
}
else
{
fCallParams[0] = reinterpret_cast<Long_t>(&fName);
}
for ( Int_t i = 0; i < nparams; ++i )
{
TString pValue = static_cast<TObjString*>(paramValues->At(i))->String();
TString pType = static_cast<TObjString*>(paramTypes->At(i))->String();
if ( pType.Contains("Double_t"))
{
fDoubleParams[i] = pValue.Atof();
fCallParams[i+nMainPar] = reinterpret_cast<Long_t>(&fDoubleParams[i]);
}
else if ( pType.Contains("Int_t") )
{
fCallParams[i+nMainPar] = pValue.Atoi();
}
else
{
AliError(Form("Got a parameter of type %s which I don't exactly know how to deal with. Expect something bad to happen...",pType.Data()));
fCallParams[i+nMainPar] = reinterpret_cast<Long_t>(&pValue);
}
}
nameOfMethod.SetParamPtrs(&fCallParams[0+nMainPar-1]);
nameOfMethod.Execute(fCutObject);
delete paramTypes;
delete paramValues;
}
else
{
Int_t nuint = CountOccurences(scutMethodPrototype,"UInt_t");
Bool_t ok =
( nuint == 3 && nstrings == 2 && ( nuint + nstrings ) == fNofParams ) ||
( nuint == 0 && nstrings == 2 && nstrings == fNofParams );
if (!ok)
{
AliError("Incorrect prototype for a trigger class cutter");
delete fCutMethod;
fCutMethod=0x0;
return;
}
}
if ( expectedType == kEvent && ! (fIsEventCutter || fIsEventHandlerCutter) )
{
AliError("No, it's not an event cutter. Invalidate");
delete fCutMethod;
fCutMethod=0x0;
}
if ( expectedType == kTrack && !fIsTrackCutter )
{
AliError("No, it's not a track cutter. Invalidate");
delete fCutMethod;
fCutMethod=0x0;
}
if ( expectedType == kTrackPair && !fIsTrackPairCutter )
{
AliError("No, it's not a track pair cutter. Invalidate");
delete fCutMethod;
fCutMethod=0x0;
}
if ( expectedType == kTriggerClass && !fIsTriggerClassCutter )
{
AliError("No, it's not a trigger class cutter. Invalidate");
delete fCutMethod;
fCutMethod=0x0;
}
}
Bool_t AliAnalysisMuMuCutElement::IsEqual(const TObject* obj) const
{
if ( obj->IsA() != IsA() ) return kFALSE;
const AliAnalysisMuMuCutElement* cut = static_cast<const AliAnalysisMuMuCutElement*>(obj);
return ( fName == cut->fName &&
fIsEventCutter == cut->fIsEventCutter &&
fIsEventHandlerCutter == cut->fIsEventHandlerCutter &&
fIsTrackCutter == cut->fIsTrackCutter &&
fIsTrackPairCutter == cut->fIsTrackPairCutter &&
fIsTriggerClassCutter == cut->fIsTriggerClassCutter &&
fCutMethodName == cut->fCutMethodName &&
fCutMethodPrototype == cut->fCutMethodPrototype &&
fDefaultParameters == cut->fDefaultParameters &&
fCutObject == cut->fCutObject
);
}
Bool_t AliAnalysisMuMuCutElement::Pass(const AliVEvent& event) const
{
return CallCutMethod(reinterpret_cast<Long_t>(&event));
}
Bool_t AliAnalysisMuMuCutElement::Pass(const AliInputEventHandler& eventHandler) const
{
return CallCutMethod(reinterpret_cast<Long_t>(&eventHandler));
}
Bool_t AliAnalysisMuMuCutElement::Pass(const AliVParticle& part) const
{
return CallCutMethod(reinterpret_cast<Long_t>(&part));
}
Bool_t AliAnalysisMuMuCutElement::Pass(const AliVParticle& p1, const AliVParticle& p2) const
{
return CallCutMethod(reinterpret_cast<Long_t>(&p1),reinterpret_cast<Long_t>(&p2));
}
Bool_t AliAnalysisMuMuCutElement::Pass(const TString& firedTriggerClasses,
TString& acceptedTriggerClasses,
UInt_t L0, UInt_t L1, UInt_t L2) const
{
if (!fCutMethod)
{
Init();
if (!fCutMethod) return kFALSE;
}
acceptedTriggerClasses = "";
Long_t result;
Long_t params[] = { reinterpret_cast<Long_t>(&firedTriggerClasses),
reinterpret_cast<Long_t>(&acceptedTriggerClasses),
L0,L1,L2 };
fCutMethod->SetParamPtrs(params);
fCutMethod->Execute(fCutObject,result);
return (result!=0);
}
void AliAnalysisMuMuCutElement::Print(Option_t* ) const
{
if ( !fCutMethod )
{
Init();
}
std::cout << Form("Cut %s(%p) %s(%p)::%s(%s) [",
fName.Data(),this,
fCutObject->ClassName(),
fCutObject,
GetCallMethodName(),
GetCallMethodProto());
if ( IsEventCutter() ) std::cout << " E";
if ( IsEventHandlerCutter() ) std::cout << " EH";
if ( IsTrackCutter() ) std::cout << " T";
if ( IsTrackPairCutter() ) std::cout << " TP";
if ( IsTriggerClassCutter() ) std::cout << " TC";
std::cout << " ]" << std::endl;
}
AliAnalysisMuMuCutElementBar::AliAnalysisMuMuCutElementBar() : AliAnalysisMuMuCutElement(),
fCutElement(0x0)
{
}
AliAnalysisMuMuCutElementBar::AliAnalysisMuMuCutElementBar(const AliAnalysisMuMuCutElement& ce)
: AliAnalysisMuMuCutElement(), fCutElement(&ce)
{
fIsEventCutter = ce.IsEventCutter();
fIsEventHandlerCutter = ce.IsEventHandlerCutter();
fIsTrackCutter = ce.IsTrackCutter();
fIsTrackPairCutter = ce.IsTrackPairCutter();
fName = TString::Format("NOT%s",ce.GetName());
}
AliAnalysisMuMuCutElementBar::~AliAnalysisMuMuCutElementBar()
{
}
void AliAnalysisMuMuCutElementBar::Print(Option_t* ) const
{
std::cout << Form("Cut %s(%p) : negation of %s(%p)",GetName(),this,fCutElement->GetName(),fCutElement)
<< std::endl;
}
AliAnalysisMuMuCutElement.cxx:1 AliAnalysisMuMuCutElement.cxx:2 AliAnalysisMuMuCutElement.cxx:3 AliAnalysisMuMuCutElement.cxx:4 AliAnalysisMuMuCutElement.cxx:5 AliAnalysisMuMuCutElement.cxx:6 AliAnalysisMuMuCutElement.cxx:7 AliAnalysisMuMuCutElement.cxx:8 AliAnalysisMuMuCutElement.cxx:9 AliAnalysisMuMuCutElement.cxx:10 AliAnalysisMuMuCutElement.cxx:11 AliAnalysisMuMuCutElement.cxx:12 AliAnalysisMuMuCutElement.cxx:13 AliAnalysisMuMuCutElement.cxx:14 AliAnalysisMuMuCutElement.cxx:15 AliAnalysisMuMuCutElement.cxx:16 AliAnalysisMuMuCutElement.cxx:17 AliAnalysisMuMuCutElement.cxx:18 AliAnalysisMuMuCutElement.cxx:19 AliAnalysisMuMuCutElement.cxx:20 AliAnalysisMuMuCutElement.cxx:21 AliAnalysisMuMuCutElement.cxx:22 AliAnalysisMuMuCutElement.cxx:23 AliAnalysisMuMuCutElement.cxx:24 AliAnalysisMuMuCutElement.cxx:25 AliAnalysisMuMuCutElement.cxx:26 AliAnalysisMuMuCutElement.cxx:27 AliAnalysisMuMuCutElement.cxx:28 AliAnalysisMuMuCutElement.cxx:29 AliAnalysisMuMuCutElement.cxx:30 AliAnalysisMuMuCutElement.cxx:31 AliAnalysisMuMuCutElement.cxx:32 AliAnalysisMuMuCutElement.cxx:33 AliAnalysisMuMuCutElement.cxx:34 AliAnalysisMuMuCutElement.cxx:35 AliAnalysisMuMuCutElement.cxx:36 AliAnalysisMuMuCutElement.cxx:37 AliAnalysisMuMuCutElement.cxx:38 AliAnalysisMuMuCutElement.cxx:39 AliAnalysisMuMuCutElement.cxx:40 AliAnalysisMuMuCutElement.cxx:41 AliAnalysisMuMuCutElement.cxx:42 AliAnalysisMuMuCutElement.cxx:43 AliAnalysisMuMuCutElement.cxx:44 AliAnalysisMuMuCutElement.cxx:45 AliAnalysisMuMuCutElement.cxx:46 AliAnalysisMuMuCutElement.cxx:47 AliAnalysisMuMuCutElement.cxx:48 AliAnalysisMuMuCutElement.cxx:49 AliAnalysisMuMuCutElement.cxx:50 AliAnalysisMuMuCutElement.cxx:51 AliAnalysisMuMuCutElement.cxx:52 AliAnalysisMuMuCutElement.cxx:53 AliAnalysisMuMuCutElement.cxx:54 AliAnalysisMuMuCutElement.cxx:55 AliAnalysisMuMuCutElement.cxx:56 AliAnalysisMuMuCutElement.cxx:57 AliAnalysisMuMuCutElement.cxx:58 AliAnalysisMuMuCutElement.cxx:59 AliAnalysisMuMuCutElement.cxx:60 AliAnalysisMuMuCutElement.cxx:61 AliAnalysisMuMuCutElement.cxx:62 AliAnalysisMuMuCutElement.cxx:63 AliAnalysisMuMuCutElement.cxx:64 AliAnalysisMuMuCutElement.cxx:65 AliAnalysisMuMuCutElement.cxx:66 AliAnalysisMuMuCutElement.cxx:67 AliAnalysisMuMuCutElement.cxx:68 AliAnalysisMuMuCutElement.cxx:69 AliAnalysisMuMuCutElement.cxx:70 AliAnalysisMuMuCutElement.cxx:71 AliAnalysisMuMuCutElement.cxx:72 AliAnalysisMuMuCutElement.cxx:73 AliAnalysisMuMuCutElement.cxx:74 AliAnalysisMuMuCutElement.cxx:75 AliAnalysisMuMuCutElement.cxx:76 AliAnalysisMuMuCutElement.cxx:77 AliAnalysisMuMuCutElement.cxx:78 AliAnalysisMuMuCutElement.cxx:79 AliAnalysisMuMuCutElement.cxx:80 AliAnalysisMuMuCutElement.cxx:81 AliAnalysisMuMuCutElement.cxx:82 AliAnalysisMuMuCutElement.cxx:83 AliAnalysisMuMuCutElement.cxx:84 AliAnalysisMuMuCutElement.cxx:85 AliAnalysisMuMuCutElement.cxx:86 AliAnalysisMuMuCutElement.cxx:87 AliAnalysisMuMuCutElement.cxx:88 AliAnalysisMuMuCutElement.cxx:89 AliAnalysisMuMuCutElement.cxx:90 AliAnalysisMuMuCutElement.cxx:91 AliAnalysisMuMuCutElement.cxx:92 AliAnalysisMuMuCutElement.cxx:93 AliAnalysisMuMuCutElement.cxx:94 AliAnalysisMuMuCutElement.cxx:95 AliAnalysisMuMuCutElement.cxx:96 AliAnalysisMuMuCutElement.cxx:97 AliAnalysisMuMuCutElement.cxx:98 AliAnalysisMuMuCutElement.cxx:99 AliAnalysisMuMuCutElement.cxx:100 AliAnalysisMuMuCutElement.cxx:101 AliAnalysisMuMuCutElement.cxx:102 AliAnalysisMuMuCutElement.cxx:103 AliAnalysisMuMuCutElement.cxx:104 AliAnalysisMuMuCutElement.cxx:105 AliAnalysisMuMuCutElement.cxx:106 AliAnalysisMuMuCutElement.cxx:107 AliAnalysisMuMuCutElement.cxx:108 AliAnalysisMuMuCutElement.cxx:109 AliAnalysisMuMuCutElement.cxx:110 AliAnalysisMuMuCutElement.cxx:111 AliAnalysisMuMuCutElement.cxx:112 AliAnalysisMuMuCutElement.cxx:113 AliAnalysisMuMuCutElement.cxx:114 AliAnalysisMuMuCutElement.cxx:115 AliAnalysisMuMuCutElement.cxx:116 AliAnalysisMuMuCutElement.cxx:117 AliAnalysisMuMuCutElement.cxx:118 AliAnalysisMuMuCutElement.cxx:119 AliAnalysisMuMuCutElement.cxx:120 AliAnalysisMuMuCutElement.cxx:121 AliAnalysisMuMuCutElement.cxx:122 AliAnalysisMuMuCutElement.cxx:123 AliAnalysisMuMuCutElement.cxx:124 AliAnalysisMuMuCutElement.cxx:125 AliAnalysisMuMuCutElement.cxx:126 AliAnalysisMuMuCutElement.cxx:127 AliAnalysisMuMuCutElement.cxx:128 AliAnalysisMuMuCutElement.cxx:129 AliAnalysisMuMuCutElement.cxx:130 AliAnalysisMuMuCutElement.cxx:131 AliAnalysisMuMuCutElement.cxx:132 AliAnalysisMuMuCutElement.cxx:133 AliAnalysisMuMuCutElement.cxx:134 AliAnalysisMuMuCutElement.cxx:135 AliAnalysisMuMuCutElement.cxx:136 AliAnalysisMuMuCutElement.cxx:137 AliAnalysisMuMuCutElement.cxx:138 AliAnalysisMuMuCutElement.cxx:139 AliAnalysisMuMuCutElement.cxx:140 AliAnalysisMuMuCutElement.cxx:141 AliAnalysisMuMuCutElement.cxx:142 AliAnalysisMuMuCutElement.cxx:143 AliAnalysisMuMuCutElement.cxx:144 AliAnalysisMuMuCutElement.cxx:145 AliAnalysisMuMuCutElement.cxx:146 AliAnalysisMuMuCutElement.cxx:147 AliAnalysisMuMuCutElement.cxx:148 AliAnalysisMuMuCutElement.cxx:149 AliAnalysisMuMuCutElement.cxx:150 AliAnalysisMuMuCutElement.cxx:151 AliAnalysisMuMuCutElement.cxx:152 AliAnalysisMuMuCutElement.cxx:153 AliAnalysisMuMuCutElement.cxx:154 AliAnalysisMuMuCutElement.cxx:155 AliAnalysisMuMuCutElement.cxx:156 AliAnalysisMuMuCutElement.cxx:157 AliAnalysisMuMuCutElement.cxx:158 AliAnalysisMuMuCutElement.cxx:159 AliAnalysisMuMuCutElement.cxx:160 AliAnalysisMuMuCutElement.cxx:161 AliAnalysisMuMuCutElement.cxx:162 AliAnalysisMuMuCutElement.cxx:163 AliAnalysisMuMuCutElement.cxx:164 AliAnalysisMuMuCutElement.cxx:165 AliAnalysisMuMuCutElement.cxx:166 AliAnalysisMuMuCutElement.cxx:167 AliAnalysisMuMuCutElement.cxx:168 AliAnalysisMuMuCutElement.cxx:169 AliAnalysisMuMuCutElement.cxx:170 AliAnalysisMuMuCutElement.cxx:171 AliAnalysisMuMuCutElement.cxx:172 AliAnalysisMuMuCutElement.cxx:173 AliAnalysisMuMuCutElement.cxx:174 AliAnalysisMuMuCutElement.cxx:175 AliAnalysisMuMuCutElement.cxx:176 AliAnalysisMuMuCutElement.cxx:177 AliAnalysisMuMuCutElement.cxx:178 AliAnalysisMuMuCutElement.cxx:179 AliAnalysisMuMuCutElement.cxx:180 AliAnalysisMuMuCutElement.cxx:181 AliAnalysisMuMuCutElement.cxx:182 AliAnalysisMuMuCutElement.cxx:183 AliAnalysisMuMuCutElement.cxx:184 AliAnalysisMuMuCutElement.cxx:185 AliAnalysisMuMuCutElement.cxx:186 AliAnalysisMuMuCutElement.cxx:187 AliAnalysisMuMuCutElement.cxx:188 AliAnalysisMuMuCutElement.cxx:189 AliAnalysisMuMuCutElement.cxx:190 AliAnalysisMuMuCutElement.cxx:191 AliAnalysisMuMuCutElement.cxx:192 AliAnalysisMuMuCutElement.cxx:193 AliAnalysisMuMuCutElement.cxx:194 AliAnalysisMuMuCutElement.cxx:195 AliAnalysisMuMuCutElement.cxx:196 AliAnalysisMuMuCutElement.cxx:197 AliAnalysisMuMuCutElement.cxx:198 AliAnalysisMuMuCutElement.cxx:199 AliAnalysisMuMuCutElement.cxx:200 AliAnalysisMuMuCutElement.cxx:201 AliAnalysisMuMuCutElement.cxx:202 AliAnalysisMuMuCutElement.cxx:203 AliAnalysisMuMuCutElement.cxx:204 AliAnalysisMuMuCutElement.cxx:205 AliAnalysisMuMuCutElement.cxx:206 AliAnalysisMuMuCutElement.cxx:207 AliAnalysisMuMuCutElement.cxx:208 AliAnalysisMuMuCutElement.cxx:209 AliAnalysisMuMuCutElement.cxx:210 AliAnalysisMuMuCutElement.cxx:211 AliAnalysisMuMuCutElement.cxx:212 AliAnalysisMuMuCutElement.cxx:213 AliAnalysisMuMuCutElement.cxx:214 AliAnalysisMuMuCutElement.cxx:215 AliAnalysisMuMuCutElement.cxx:216 AliAnalysisMuMuCutElement.cxx:217 AliAnalysisMuMuCutElement.cxx:218 AliAnalysisMuMuCutElement.cxx:219 AliAnalysisMuMuCutElement.cxx:220 AliAnalysisMuMuCutElement.cxx:221 AliAnalysisMuMuCutElement.cxx:222 AliAnalysisMuMuCutElement.cxx:223 AliAnalysisMuMuCutElement.cxx:224 AliAnalysisMuMuCutElement.cxx:225 AliAnalysisMuMuCutElement.cxx:226 AliAnalysisMuMuCutElement.cxx:227 AliAnalysisMuMuCutElement.cxx:228 AliAnalysisMuMuCutElement.cxx:229 AliAnalysisMuMuCutElement.cxx:230 AliAnalysisMuMuCutElement.cxx:231 AliAnalysisMuMuCutElement.cxx:232 AliAnalysisMuMuCutElement.cxx:233 AliAnalysisMuMuCutElement.cxx:234 AliAnalysisMuMuCutElement.cxx:235 AliAnalysisMuMuCutElement.cxx:236 AliAnalysisMuMuCutElement.cxx:237 AliAnalysisMuMuCutElement.cxx:238 AliAnalysisMuMuCutElement.cxx:239 AliAnalysisMuMuCutElement.cxx:240 AliAnalysisMuMuCutElement.cxx:241 AliAnalysisMuMuCutElement.cxx:242 AliAnalysisMuMuCutElement.cxx:243 AliAnalysisMuMuCutElement.cxx:244 AliAnalysisMuMuCutElement.cxx:245 AliAnalysisMuMuCutElement.cxx:246 AliAnalysisMuMuCutElement.cxx:247 AliAnalysisMuMuCutElement.cxx:248 AliAnalysisMuMuCutElement.cxx:249 AliAnalysisMuMuCutElement.cxx:250 AliAnalysisMuMuCutElement.cxx:251 AliAnalysisMuMuCutElement.cxx:252 AliAnalysisMuMuCutElement.cxx:253 AliAnalysisMuMuCutElement.cxx:254 AliAnalysisMuMuCutElement.cxx:255 AliAnalysisMuMuCutElement.cxx:256 AliAnalysisMuMuCutElement.cxx:257 AliAnalysisMuMuCutElement.cxx:258 AliAnalysisMuMuCutElement.cxx:259 AliAnalysisMuMuCutElement.cxx:260 AliAnalysisMuMuCutElement.cxx:261 AliAnalysisMuMuCutElement.cxx:262 AliAnalysisMuMuCutElement.cxx:263 AliAnalysisMuMuCutElement.cxx:264 AliAnalysisMuMuCutElement.cxx:265 AliAnalysisMuMuCutElement.cxx:266 AliAnalysisMuMuCutElement.cxx:267 AliAnalysisMuMuCutElement.cxx:268 AliAnalysisMuMuCutElement.cxx:269 AliAnalysisMuMuCutElement.cxx:270 AliAnalysisMuMuCutElement.cxx:271 AliAnalysisMuMuCutElement.cxx:272 AliAnalysisMuMuCutElement.cxx:273 AliAnalysisMuMuCutElement.cxx:274 AliAnalysisMuMuCutElement.cxx:275 AliAnalysisMuMuCutElement.cxx:276 AliAnalysisMuMuCutElement.cxx:277 AliAnalysisMuMuCutElement.cxx:278 AliAnalysisMuMuCutElement.cxx:279 AliAnalysisMuMuCutElement.cxx:280 AliAnalysisMuMuCutElement.cxx:281 AliAnalysisMuMuCutElement.cxx:282 AliAnalysisMuMuCutElement.cxx:283 AliAnalysisMuMuCutElement.cxx:284 AliAnalysisMuMuCutElement.cxx:285 AliAnalysisMuMuCutElement.cxx:286 AliAnalysisMuMuCutElement.cxx:287 AliAnalysisMuMuCutElement.cxx:288 AliAnalysisMuMuCutElement.cxx:289 AliAnalysisMuMuCutElement.cxx:290 AliAnalysisMuMuCutElement.cxx:291 AliAnalysisMuMuCutElement.cxx:292 AliAnalysisMuMuCutElement.cxx:293 AliAnalysisMuMuCutElement.cxx:294 AliAnalysisMuMuCutElement.cxx:295 AliAnalysisMuMuCutElement.cxx:296 AliAnalysisMuMuCutElement.cxx:297 AliAnalysisMuMuCutElement.cxx:298 AliAnalysisMuMuCutElement.cxx:299 AliAnalysisMuMuCutElement.cxx:300 AliAnalysisMuMuCutElement.cxx:301 AliAnalysisMuMuCutElement.cxx:302 AliAnalysisMuMuCutElement.cxx:303 AliAnalysisMuMuCutElement.cxx:304 AliAnalysisMuMuCutElement.cxx:305 AliAnalysisMuMuCutElement.cxx:306 AliAnalysisMuMuCutElement.cxx:307 AliAnalysisMuMuCutElement.cxx:308 AliAnalysisMuMuCutElement.cxx:309 AliAnalysisMuMuCutElement.cxx:310 AliAnalysisMuMuCutElement.cxx:311 AliAnalysisMuMuCutElement.cxx:312 AliAnalysisMuMuCutElement.cxx:313 AliAnalysisMuMuCutElement.cxx:314 AliAnalysisMuMuCutElement.cxx:315 AliAnalysisMuMuCutElement.cxx:316 AliAnalysisMuMuCutElement.cxx:317 AliAnalysisMuMuCutElement.cxx:318 AliAnalysisMuMuCutElement.cxx:319 AliAnalysisMuMuCutElement.cxx:320 AliAnalysisMuMuCutElement.cxx:321 AliAnalysisMuMuCutElement.cxx:322 AliAnalysisMuMuCutElement.cxx:323 AliAnalysisMuMuCutElement.cxx:324 AliAnalysisMuMuCutElement.cxx:325 AliAnalysisMuMuCutElement.cxx:326 AliAnalysisMuMuCutElement.cxx:327 AliAnalysisMuMuCutElement.cxx:328 AliAnalysisMuMuCutElement.cxx:329 AliAnalysisMuMuCutElement.cxx:330 AliAnalysisMuMuCutElement.cxx:331 AliAnalysisMuMuCutElement.cxx:332 AliAnalysisMuMuCutElement.cxx:333 AliAnalysisMuMuCutElement.cxx:334 AliAnalysisMuMuCutElement.cxx:335 AliAnalysisMuMuCutElement.cxx:336 AliAnalysisMuMuCutElement.cxx:337 AliAnalysisMuMuCutElement.cxx:338 AliAnalysisMuMuCutElement.cxx:339 AliAnalysisMuMuCutElement.cxx:340 AliAnalysisMuMuCutElement.cxx:341 AliAnalysisMuMuCutElement.cxx:342 AliAnalysisMuMuCutElement.cxx:343 AliAnalysisMuMuCutElement.cxx:344 AliAnalysisMuMuCutElement.cxx:345 AliAnalysisMuMuCutElement.cxx:346 AliAnalysisMuMuCutElement.cxx:347 AliAnalysisMuMuCutElement.cxx:348 AliAnalysisMuMuCutElement.cxx:349 AliAnalysisMuMuCutElement.cxx:350 AliAnalysisMuMuCutElement.cxx:351 AliAnalysisMuMuCutElement.cxx:352 AliAnalysisMuMuCutElement.cxx:353 AliAnalysisMuMuCutElement.cxx:354 AliAnalysisMuMuCutElement.cxx:355 AliAnalysisMuMuCutElement.cxx:356 AliAnalysisMuMuCutElement.cxx:357 AliAnalysisMuMuCutElement.cxx:358 AliAnalysisMuMuCutElement.cxx:359 AliAnalysisMuMuCutElement.cxx:360 AliAnalysisMuMuCutElement.cxx:361 AliAnalysisMuMuCutElement.cxx:362 AliAnalysisMuMuCutElement.cxx:363 AliAnalysisMuMuCutElement.cxx:364 AliAnalysisMuMuCutElement.cxx:365 AliAnalysisMuMuCutElement.cxx:366 AliAnalysisMuMuCutElement.cxx:367 AliAnalysisMuMuCutElement.cxx:368 AliAnalysisMuMuCutElement.cxx:369 AliAnalysisMuMuCutElement.cxx:370 AliAnalysisMuMuCutElement.cxx:371 AliAnalysisMuMuCutElement.cxx:372 AliAnalysisMuMuCutElement.cxx:373 AliAnalysisMuMuCutElement.cxx:374 AliAnalysisMuMuCutElement.cxx:375 AliAnalysisMuMuCutElement.cxx:376 AliAnalysisMuMuCutElement.cxx:377 AliAnalysisMuMuCutElement.cxx:378 AliAnalysisMuMuCutElement.cxx:379 AliAnalysisMuMuCutElement.cxx:380 AliAnalysisMuMuCutElement.cxx:381 AliAnalysisMuMuCutElement.cxx:382 AliAnalysisMuMuCutElement.cxx:383 AliAnalysisMuMuCutElement.cxx:384 AliAnalysisMuMuCutElement.cxx:385 AliAnalysisMuMuCutElement.cxx:386 AliAnalysisMuMuCutElement.cxx:387 AliAnalysisMuMuCutElement.cxx:388 AliAnalysisMuMuCutElement.cxx:389 AliAnalysisMuMuCutElement.cxx:390 AliAnalysisMuMuCutElement.cxx:391 AliAnalysisMuMuCutElement.cxx:392 AliAnalysisMuMuCutElement.cxx:393 AliAnalysisMuMuCutElement.cxx:394 AliAnalysisMuMuCutElement.cxx:395 AliAnalysisMuMuCutElement.cxx:396 AliAnalysisMuMuCutElement.cxx:397 AliAnalysisMuMuCutElement.cxx:398 AliAnalysisMuMuCutElement.cxx:399 AliAnalysisMuMuCutElement.cxx:400 AliAnalysisMuMuCutElement.cxx:401 AliAnalysisMuMuCutElement.cxx:402 AliAnalysisMuMuCutElement.cxx:403 AliAnalysisMuMuCutElement.cxx:404 AliAnalysisMuMuCutElement.cxx:405 AliAnalysisMuMuCutElement.cxx:406 AliAnalysisMuMuCutElement.cxx:407 AliAnalysisMuMuCutElement.cxx:408 AliAnalysisMuMuCutElement.cxx:409 AliAnalysisMuMuCutElement.cxx:410 AliAnalysisMuMuCutElement.cxx:411 AliAnalysisMuMuCutElement.cxx:412 AliAnalysisMuMuCutElement.cxx:413 AliAnalysisMuMuCutElement.cxx:414 AliAnalysisMuMuCutElement.cxx:415 AliAnalysisMuMuCutElement.cxx:416 AliAnalysisMuMuCutElement.cxx:417 AliAnalysisMuMuCutElement.cxx:418 AliAnalysisMuMuCutElement.cxx:419 AliAnalysisMuMuCutElement.cxx:420 AliAnalysisMuMuCutElement.cxx:421 AliAnalysisMuMuCutElement.cxx:422 AliAnalysisMuMuCutElement.cxx:423 AliAnalysisMuMuCutElement.cxx:424 AliAnalysisMuMuCutElement.cxx:425 AliAnalysisMuMuCutElement.cxx:426 AliAnalysisMuMuCutElement.cxx:427 AliAnalysisMuMuCutElement.cxx:428 AliAnalysisMuMuCutElement.cxx:429 AliAnalysisMuMuCutElement.cxx:430 AliAnalysisMuMuCutElement.cxx:431 AliAnalysisMuMuCutElement.cxx:432 AliAnalysisMuMuCutElement.cxx:433 AliAnalysisMuMuCutElement.cxx:434 AliAnalysisMuMuCutElement.cxx:435 AliAnalysisMuMuCutElement.cxx:436 AliAnalysisMuMuCutElement.cxx:437 AliAnalysisMuMuCutElement.cxx:438 AliAnalysisMuMuCutElement.cxx:439 AliAnalysisMuMuCutElement.cxx:440 AliAnalysisMuMuCutElement.cxx:441 AliAnalysisMuMuCutElement.cxx:442 AliAnalysisMuMuCutElement.cxx:443 AliAnalysisMuMuCutElement.cxx:444 AliAnalysisMuMuCutElement.cxx:445 AliAnalysisMuMuCutElement.cxx:446 AliAnalysisMuMuCutElement.cxx:447 AliAnalysisMuMuCutElement.cxx:448 AliAnalysisMuMuCutElement.cxx:449 AliAnalysisMuMuCutElement.cxx:450 AliAnalysisMuMuCutElement.cxx:451 AliAnalysisMuMuCutElement.cxx:452 AliAnalysisMuMuCutElement.cxx:453 AliAnalysisMuMuCutElement.cxx:454 AliAnalysisMuMuCutElement.cxx:455 AliAnalysisMuMuCutElement.cxx:456 AliAnalysisMuMuCutElement.cxx:457 AliAnalysisMuMuCutElement.cxx:458 AliAnalysisMuMuCutElement.cxx:459 AliAnalysisMuMuCutElement.cxx:460 AliAnalysisMuMuCutElement.cxx:461 AliAnalysisMuMuCutElement.cxx:462 AliAnalysisMuMuCutElement.cxx:463 AliAnalysisMuMuCutElement.cxx:464 AliAnalysisMuMuCutElement.cxx:465 AliAnalysisMuMuCutElement.cxx:466 AliAnalysisMuMuCutElement.cxx:467 AliAnalysisMuMuCutElement.cxx:468 AliAnalysisMuMuCutElement.cxx:469 AliAnalysisMuMuCutElement.cxx:470 AliAnalysisMuMuCutElement.cxx:471 AliAnalysisMuMuCutElement.cxx:472 AliAnalysisMuMuCutElement.cxx:473 AliAnalysisMuMuCutElement.cxx:474 AliAnalysisMuMuCutElement.cxx:475 AliAnalysisMuMuCutElement.cxx:476 AliAnalysisMuMuCutElement.cxx:477 AliAnalysisMuMuCutElement.cxx:478 AliAnalysisMuMuCutElement.cxx:479 AliAnalysisMuMuCutElement.cxx:480 AliAnalysisMuMuCutElement.cxx:481 AliAnalysisMuMuCutElement.cxx:482 AliAnalysisMuMuCutElement.cxx:483 AliAnalysisMuMuCutElement.cxx:484 AliAnalysisMuMuCutElement.cxx:485 AliAnalysisMuMuCutElement.cxx:486 AliAnalysisMuMuCutElement.cxx:487 AliAnalysisMuMuCutElement.cxx:488 AliAnalysisMuMuCutElement.cxx:489 AliAnalysisMuMuCutElement.cxx:490 AliAnalysisMuMuCutElement.cxx:491 AliAnalysisMuMuCutElement.cxx:492 AliAnalysisMuMuCutElement.cxx:493 AliAnalysisMuMuCutElement.cxx:494 AliAnalysisMuMuCutElement.cxx:495 AliAnalysisMuMuCutElement.cxx:496 AliAnalysisMuMuCutElement.cxx:497 AliAnalysisMuMuCutElement.cxx:498 AliAnalysisMuMuCutElement.cxx:499 AliAnalysisMuMuCutElement.cxx:500 AliAnalysisMuMuCutElement.cxx:501 AliAnalysisMuMuCutElement.cxx:502 AliAnalysisMuMuCutElement.cxx:503 AliAnalysisMuMuCutElement.cxx:504 AliAnalysisMuMuCutElement.cxx:505 AliAnalysisMuMuCutElement.cxx:506 AliAnalysisMuMuCutElement.cxx:507 AliAnalysisMuMuCutElement.cxx:508 AliAnalysisMuMuCutElement.cxx:509 AliAnalysisMuMuCutElement.cxx:510 AliAnalysisMuMuCutElement.cxx:511 AliAnalysisMuMuCutElement.cxx:512 AliAnalysisMuMuCutElement.cxx:513 AliAnalysisMuMuCutElement.cxx:514 AliAnalysisMuMuCutElement.cxx:515 AliAnalysisMuMuCutElement.cxx:516 AliAnalysisMuMuCutElement.cxx:517 AliAnalysisMuMuCutElement.cxx:518 AliAnalysisMuMuCutElement.cxx:519 AliAnalysisMuMuCutElement.cxx:520 AliAnalysisMuMuCutElement.cxx:521 AliAnalysisMuMuCutElement.cxx:522 AliAnalysisMuMuCutElement.cxx:523 AliAnalysisMuMuCutElement.cxx:524 AliAnalysisMuMuCutElement.cxx:525 AliAnalysisMuMuCutElement.cxx:526 AliAnalysisMuMuCutElement.cxx:527 AliAnalysisMuMuCutElement.cxx:528 AliAnalysisMuMuCutElement.cxx:529 AliAnalysisMuMuCutElement.cxx:530 AliAnalysisMuMuCutElement.cxx:531 AliAnalysisMuMuCutElement.cxx:532 AliAnalysisMuMuCutElement.cxx:533 AliAnalysisMuMuCutElement.cxx:534 AliAnalysisMuMuCutElement.cxx:535 AliAnalysisMuMuCutElement.cxx:536 AliAnalysisMuMuCutElement.cxx:537 AliAnalysisMuMuCutElement.cxx:538 AliAnalysisMuMuCutElement.cxx:539 AliAnalysisMuMuCutElement.cxx:540 AliAnalysisMuMuCutElement.cxx:541 AliAnalysisMuMuCutElement.cxx:542 AliAnalysisMuMuCutElement.cxx:543 AliAnalysisMuMuCutElement.cxx:544 AliAnalysisMuMuCutElement.cxx:545 AliAnalysisMuMuCutElement.cxx:546 AliAnalysisMuMuCutElement.cxx:547 AliAnalysisMuMuCutElement.cxx:548 AliAnalysisMuMuCutElement.cxx:549 AliAnalysisMuMuCutElement.cxx:550 AliAnalysisMuMuCutElement.cxx:551 AliAnalysisMuMuCutElement.cxx:552 AliAnalysisMuMuCutElement.cxx:553 AliAnalysisMuMuCutElement.cxx:554 AliAnalysisMuMuCutElement.cxx:555 AliAnalysisMuMuCutElement.cxx:556 AliAnalysisMuMuCutElement.cxx:557 AliAnalysisMuMuCutElement.cxx:558 AliAnalysisMuMuCutElement.cxx:559 AliAnalysisMuMuCutElement.cxx:560 AliAnalysisMuMuCutElement.cxx:561 AliAnalysisMuMuCutElement.cxx:562 AliAnalysisMuMuCutElement.cxx:563 AliAnalysisMuMuCutElement.cxx:564 AliAnalysisMuMuCutElement.cxx:565 AliAnalysisMuMuCutElement.cxx:566 AliAnalysisMuMuCutElement.cxx:567 AliAnalysisMuMuCutElement.cxx:568 AliAnalysisMuMuCutElement.cxx:569 AliAnalysisMuMuCutElement.cxx:570 AliAnalysisMuMuCutElement.cxx:571 AliAnalysisMuMuCutElement.cxx:572 AliAnalysisMuMuCutElement.cxx:573 AliAnalysisMuMuCutElement.cxx:574 AliAnalysisMuMuCutElement.cxx:575 AliAnalysisMuMuCutElement.cxx:576 AliAnalysisMuMuCutElement.cxx:577 AliAnalysisMuMuCutElement.cxx:578 AliAnalysisMuMuCutElement.cxx:579 AliAnalysisMuMuCutElement.cxx:580 AliAnalysisMuMuCutElement.cxx:581 AliAnalysisMuMuCutElement.cxx:582 AliAnalysisMuMuCutElement.cxx:583 AliAnalysisMuMuCutElement.cxx:584 AliAnalysisMuMuCutElement.cxx:585 AliAnalysisMuMuCutElement.cxx:586 AliAnalysisMuMuCutElement.cxx:587 AliAnalysisMuMuCutElement.cxx:588 AliAnalysisMuMuCutElement.cxx:589 AliAnalysisMuMuCutElement.cxx:590 AliAnalysisMuMuCutElement.cxx:591 AliAnalysisMuMuCutElement.cxx:592 AliAnalysisMuMuCutElement.cxx:593 AliAnalysisMuMuCutElement.cxx:594 AliAnalysisMuMuCutElement.cxx:595 AliAnalysisMuMuCutElement.cxx:596 AliAnalysisMuMuCutElement.cxx:597 AliAnalysisMuMuCutElement.cxx:598 AliAnalysisMuMuCutElement.cxx:599 AliAnalysisMuMuCutElement.cxx:600 AliAnalysisMuMuCutElement.cxx:601 AliAnalysisMuMuCutElement.cxx:602