#include <cstdlib>
#include <TRandom.h>
-using std::vector;
-using std::deque;
-
const char* kPairClassNamesTG[7] = {
"unlike",
"like_pp",
fVemtmp(0x0),
fVeptmp(0x0),
fdconvphiv(acos(-1.0)),
+ fdconvMee(100),
fdop(0),
fbz(0),
fdv0mixing(kTRUE),
fVemtmp(0x0),
fVeptmp(0x0),
fdconvphiv(acos(-1.0)),
+ fdconvMee(100),
fdop(0),
fbz(0),
fdv0mixing(kTRUE),
die->SaveDebugTree();
AliDielectronMixingHandler *mix=die->GetMixingHandler();
// printf("\n\n\n===============\ncall mix in Terminate: %p (%p)\n=================\n\n",mix,die);
- if (mix) mix->MixRemaining(die);
+ if(!mix) continue;
+ for (Int_t ipool=0; ipool<mix->GetNumberOfBins(); ++ipool){
+ mix->MixRemaining(die, ipool);
+ }
}
PostData(1, &fListHistos);
PostData(2, &fListCF);
Bool_t pairClass1=fHistos->GetHistogramList()->FindObject(className1.Data())!=0x0;
Bool_t pairClass2=fHistos->GetHistogramList()->FindObject(className2.Data())!=0x0;
- if (pairClass1 && PairTrackcut(dphiv, dcos, idie)==true){
+ if (pairClass1 && PairTrackcut(dphiv, dcos, dmass, idie)==true){
///import pair variables to values!!
values[AliDielectronVarManager::kPx] = dpxpair;
values[AliDielectronVarManager::kPy] = dpypair;
}
- if (pairClass2 && PairTrackcut(dphiv, dopeningangle, idie)==true){
+ if (pairClass2 && PairTrackcut(dphiv, dopeningangle, dv0mass, idie)==true){
values[AliDielectronVarManager::kPx] = dv0pxpair;
values[AliDielectronVarManager::kPy] = dv0pypair;
values[AliDielectronVarManager::kPz] = dv0pzpair;
}
//_________________________________________________________________________________
-bool AliAnalysisTaskMultiDielectronTG::PairTrackcut(double phiv, double op, int idie)
+bool AliAnalysisTaskMultiDielectronTG::PairTrackcut(double phiv, double op, double mass, int idie)
{
//
if(fRejectPairFlag[idie] == 1 || fRejectPairFlag[idie] == 2 ||
fRejectPairFlag[idie] == 3 || fRejectPairFlag[idie] == 4 ){
if(fRejectPairFlag[idie] == 2 || fRejectPairFlag[idie] == 4 ){
- if(fbz>0 && phiv>fdconvphiv){
+ if(fbz>0 && (phiv>fdconvphiv && mass < fdconvMee) ){
pairOK = false;
- }else if(fbz<0 && phiv<acos(-1.0)-fdconvphiv){
+ }else if(fbz<0 && phiv<acos(-1.0)-fdconvphiv && mass < fdconvMee){
pairOK = false;
}
}else if(fRejectPairFlag[idie] == 1 || fRejectPairFlag[idie] == 3){
+ sqrt(me*me+iem->Px()*iem->Px()+iem->Py()*iem->Py()+iem->Pz()*iem->Pz());
mass = e*e-px*px-py*py-pz*pz;
- if(mass<0){
- mass = mass;
- }else{
+ if(mass>=0){
mass = sqrt(mass);
}
}
}else if(fRejectPairFlag[idie]==2){
Double_t phiv = GetPhiv(e1[i1], e2[i2]);
- if(fbz>0 && phiv>fdconvphiv){
+ Double_t mee = GetMass(e1[i1], e2[i2]);
+ if(fbz>0 && ( phiv>fdconvphiv && mee < fdconvMee) ){
e1[i1]->SetConvFlag(0);
e2[i2]->SetConvFlag(0);
- }else if(fbz<0 && phiv<acos(-1.0)-fdconvphiv){
+ }else if(fbz<0 && phiv<acos(-1.0)-fdconvphiv && mee < fdconvMee){
e1[i1]->SetConvFlag(0);
e2[i2]->SetConvFlag(0);
}
}
}
}
- /////// this is really necessary??????
if(e1.size()>0){
for(int i1=0; i1<(int)e1.size(); i1++){
for(int i2=i1+1; i2<(int)e1.size(); i2++){
}
}else if(fRejectPairFlag[idie]==2){
Double_t phiv = GetPhiv(e1[i1], e1[i2]);
- if(fbz>0 && phiv>fdconvphiv){
+ Double_t mee = GetMass(e1[i1], e1[i2]);
+ if(fbz>0 && phiv>fdconvphiv && mee < fdconvMee){
e1[i1]->SetConvFlag(0);
e1[i2]->SetConvFlag(0);
- }else if(fbz<0 && phiv<acos(-1.0)-fdconvphiv){
+ }else if(fbz<0 && phiv<acos(-1.0)-fdconvphiv && mee < fdconvMee){
e1[i1]->SetConvFlag(0);
e1[i2]->SetConvFlag(0);
}
}
}else if(fRejectPairFlag[idie]==2){
Double_t phiv = GetPhiv(e2[i1], e2[i2]);
- if(fbz>0 && phiv>fdconvphiv){
+ Double_t mee = GetMass(e2[i1], e2[i2]);
+ if(fbz>0 && phiv>fdconvphiv && mee < fdconvMee){
e2[i1]->SetConvFlag(0);
e2[i2]->SetConvFlag(0);
- }else if(fbz<0 && phiv<acos(-1.0)-fdconvphiv){
+ }else if(fbz<0 && phiv<acos(-1.0)-fdconvphiv && mee < fdconvMee){
e2[i1]->SetConvFlag(0);
e2[i2]->SetConvFlag(0);
}
Double_t AliAnalysisTaskMultiDielectronTG::GetPhiv(AliDielectronSingleTG* e1, AliDielectronSingleTG* e2){
//////////////////////
- //////// calculate pairs and get opening angle
+ //////// calculate pairs and get phiv
//////////////////////
double dmass, dphiv, dpxpair, dpypair, dpzpair;
return dphiv;
}
+
+//_________________________________________________________________________________
+Double_t AliAnalysisTaskMultiDielectronTG::GetMass(AliDielectronSingleTG* e1, AliDielectronSingleTG* e2){
+
+ //////////////////////
+ //////// calculate pairs and get mass
+ //////////////////////
+
+ double dmass, dphiv, dpxpair, dpypair, dpzpair;
+ double dptpair, depair, dphipair, detapair, dcos, dpsi;
+
+ CalcVars(e1, e2, dmass, dphiv, dpxpair, dpypair, dpzpair,
+ dptpair, depair, dphipair, detapair, dcos, dpsi);
+
+ return dmass;
+}