Hi experts!
I’m starting to use RDataFrame to do tree analysis.
When I try to do some calculations, I wonder if it is possible to generate several outputs in one Define for calculations?
For example: If I want to calculate both v2 (regarding to mean(cos 2phi)) and mean(pT) using functions like:
auto calculation = [&m](const ROOT::RVecF &phi,const ROOT::RVecF &eta,const ROOT::RVecF &pT,int npart,int RefMult){
double calculation[3]={0.};
double pt=0.;
double v2=0.;
double v4=0.;
double cos2phi=0.;
double sin2phi=0.;
double cos4phi=0.;
double sin4phi=0.;
for(int i=0;i<npart;i++)
{
if(isnan(phi[i])) continue;
pt+=pT[i];
cos2phi+=cos(2*phi[i]);
sin2phi+=sin(2*phi[i]);
cos4phi+=cos(4*phi[i]);
sin4phi+=sin(4*phi[i]);
}
if (RefMult==0) pt=0.;
else pt/=(float)RefMult;
if(RefMult==0 || RefMult==1)
{
v2 = 0.;
v4 = 0.;
}
else
{
v2=((cos2phi*cos2phi+sin2phi*sin2phi)-(double)(RefMult))/(double)(RefMult*(RefMult-1));
v4=((cos4phi*cos4phi+sin4phi*sin4phi)-(double)(RefMult))/(double)(RefMult*(RefMult-1));
}
if(m==0) return pt;
if(m==1) return v2;
if(m==2) return v4;
};
In fact, I could input different integer m to obtain different returning outputs, while is there any way to use one loop and one calculation to return several outputs just like what we used in GetBranchAddress and GetEntry?
Thanks in advance.
Zaining