AliAnalysisTaskThreeJets::AliAnalysisTaskThreeJets() : AliAnalysisTaskSE(),
fAOD(0x0),
+ fUseMC(0x0),
fBranchRec(""),
fBranchGen(""),
AliAnalysisTaskSE(name),
fAOD(0x0),
+ fUseMC(0x0),
fBranchRec(""),
fBranchGen(""),
// AliAODJet genJetsPythia[kMaxJets];
// Int_t nPythiaGenJets = 0;
-
- AliAODJet genJets[kMaxJets];
- Int_t nGenJets = 0;
-
+
AliAODJet recJets[kMaxJets];
Int_t nRecJets = 0;
if(!tmp)continue;
recJets[ir] = *tmp;
}
-
+
+ AliAODJet genJets[kMaxJets];
+ Int_t nGenJets = 0;
+ if(fUseMC){
// If we set a second branch for the input jets fetch this
TClonesArray * aodGenJets = dynamic_cast<TClonesArray*>(fAOD->FindListObject(fBranchGen.Data()));
-
- if(!aodGenJets)
- {
- printf("NO MC jets Found\n");
- return;
- }
-
- // //Generated jets
- nGenJets = aodGenJets->GetEntries();
- nGenJets = TMath::Min(nGenJets, kMaxJets);
-
- for(Int_t ig =0 ; ig < nGenJets; ++ig)
- {
- AliAODJet * tmp = dynamic_cast<AliAODJet*>(aodGenJets->At(ig));
- if(!tmp)continue;
- genJets[ig] = * tmp;
- }
-
-// AliGenPythiaEventHeader* pythiaGenHeader = AliAnalysisHelperJetTasks::GetPythiaEventHeader(mcEvent);
+
+ if(!aodGenJets)
+ {
+ printf("NO MC jets Found\n");
+ return;
+ }
+
+ // //Generated jets
+ nGenJets = aodGenJets->GetEntries();
+ nGenJets = TMath::Min(nGenJets, kMaxJets);
+
+ for(Int_t ig =0 ; ig < nGenJets; ++ig)
+ {
+ AliAODJet * tmp = dynamic_cast<AliAODJet*>(aodGenJets->At(ig));
+ if(!tmp)continue;
+ genJets[ig] = * tmp;
+ }
+ }
+ // AliGenPythiaEventHeader* pythiaGenHeader = AliAnalysisHelperJetTasks::GetPythiaEventHeader(mcEvent);
// if(!pythiaGenHeader){
// Printf("!!!NO GEN HEADER AVALABLE!!!");
// return;
//________histos for MC___________________________________________________________________________________________________________
-
Int_t nGenSel = 0;
- Int_t counter = 0;
- Int_t tag = 0;
-
- AliAODJet selJets[kMaxJets];
+ if(fUseMC){
+ Int_t counter = 0;
+ Int_t tag = 0;
+
+ AliAODJet selJets[kMaxJets];
+
+ for(Int_t i = 0; i < nGenJets; i++)
+ {
+ if(nGenJets == 1)
+ {
+ selJets[nGenSel] = genJets[i];
+ nGenSel++;
+ }
+ else
+ {
+ counter = 0;
+ tag = 0;
+ for(Int_t j = 0; j < nGenJets; j++)
+ {
+ if(i!=j)
+ {
+ Double_t dRij = genJets[i].DeltaR(&genJets[j]);
+ counter++;
+ if(dRij > 2*fR) tag++;
+ }
+ }
+ if(counter!=0)
+ {
+ if(tag/counter == 1)
+ {
+ selJets[nGenSel] = genJets[i];
+ nGenSel++;
+ }
+ }
+ }
+ }
- for(Int_t i = 0; i < nGenJets; i++)
- {
- if(nGenJets == 1)
+ if(nGenSel == 0) return;
+
+ for (Int_t gj = 0; gj < nGenSel; gj++)
+ {
+ eGen[gj] = selJets[gj].E();
+ }
+
+ TMath::Sort(nGenSel, eGen, idxGen);
+ for (Int_t ig = 0; ig < nGenSel; ig++)
+ {
+ jetGen[ig] = selJets[idxGen[ig]];
+ }
+
+ fhXSec->Fill(jetGen[0].Pt(), fXsection);
+ // AliStack * stack = mcEvent->Stack();
+
+ Int_t nMCtracks = 0;
+ Double_t eTracksMC[kTracks];
+ Double_t pTracksMC[kTracks];
+ Int_t idxTracksMC[kTracks];
+ TLorentzVector jetTracksMC[kTracks];
+ TLorentzVector jetTracksSortMC[kTracks];
+ TVector3 pTrackMC[kTracks];
+ TLorentzVector vTrackMCAll[kTracks];
+ Double_t pTrackMCAll[kTracks];
+ TLorentzVector vTrackMC[kTracks];
+ TVector3 pTrackMCBoost[kTracks];
+ Double_t eventShapes[4];
+
+ Int_t nAccTr = 0;
+ Int_t nInJet[kMaxJets];
+ TLorentzVector inJetPartV[kMaxJets][kTracks];
+ Int_t nAllTracksMC = 0;
+ TVector3 n01MC;
+
+ TClonesArray *tca = dynamic_cast<TClonesArray*>(fAOD->FindListObject(AliAODMCParticle::StdBranchName()));
+ if(!tca){
+ if(fDebug)Printf("NO Ref Tracks\n");
+ tca = 0;
+ }
+ else{
+ nMCtracks = tca->GetEntries();
+ for(Int_t iTrack = 0; iTrack < nMCtracks; iTrack++)
{
- selJets[nGenSel] = genJets[i];
- nGenSel++;
+ // TParticle * part = (TParticle*)stack->Particle(iTrack);
+ AliAODMCParticle *part = dynamic_cast<AliAODMCParticle*>(tca->At(iTrack));
+ if (!part) continue;
+ if(!part->IsPhysicalPrimary())continue;
+ Double_t fEta = part->Eta();
+ if(TMath::Abs(fEta) > .9) continue;
+ vTrackMCAll[nAllTracksMC].SetPxPyPzE(part->Px(), part->Py(), part->Pz(), part->E());
+ pTrackMCAll[nAllTracksMC] = part->Pt();
+ nAllTracksMC++;
}
- else
+ if(nAllTracksMC == 0) return;
+ for(Int_t iJet = 0; iJet < nGenSel; iJet++)
{
- counter = 0;
- tag = 0;
- for(Int_t j = 0; j < nGenJets; j++)
+ Int_t nJetTracks = 0;
+ for(Int_t i = 0; i < nAllTracksMC; i++)
{
- if(i!=j)
+ Double_t dPhi = (jetGen[iJet].Phi()-vTrackMCAll[i].Phi());
+ if(dPhi > TMath::Pi()) dPhi = dPhi - 2.*TMath::Pi();
+ if(dPhi < (-1.*TMath::Pi())) dPhi = dPhi + 2.*TMath::Pi();
+ Double_t dEta = (jetGen[iJet].Eta()-vTrackMCAll[i].Eta());
+ Double_t deltaR = TMath::Sqrt(dPhi*dPhi+dEta*dEta);
+ if(deltaR < fR && vTrackMCAll[i].Pt() > 1.5)
{
- Double_t dRij = genJets[i].DeltaR(&genJets[j]);
- counter++;
- if(dRij > 2*fR) tag++;
+ jetTracksMC[nAccTr] = vTrackMCAll[i];
+ eTracksMC[nAccTr] = vTrackMCAll[i].E();
+ pTracksMC[nAccTr] = vTrackMCAll[i].Pt();
+ inJetPartV[iJet][nJetTracks].SetPxPyPzE(vTrackMCAll[i].Px(), vTrackMCAll[i].Py(), vTrackMCAll[i].Pz(),vTrackMCAll[i].E());
+ nAccTr++;
+ nJetTracks++;
}
}
- if(counter!=0)
+ nInJet[iJet] = nJetTracks;
+ }
+
+ if(nAccTr == 0) return;
+ if(fDebug)Printf("*********** Number of Jets : %d ***************\n", nGenSel);
+ Double_t pTav[kMaxJets];
+ for(Int_t i = 0; i < nGenSel; i++)
+ {
+ Double_t pTsum = 0;
+ if(fDebug)Printf("*********** Number of particles in Jet %d = %d *******************\n", i+3, nInJet[i]);
+ for(Int_t iT = 0; iT < nInJet[i]; iT++)
{
- if(tag/counter == 1)
- {
- selJets[nGenSel] = genJets[i];
- nGenSel++;
- }
+ Double_t pt = inJetPartV[i][iT].Pt();
+ pTsum += pt;
}
+ pTav[i] = pTsum/nInJet[i];
}
- }
-
- if(nGenSel == 0) return;
-
- for (Int_t gj = 0; gj < nGenSel; gj++)
- {
- eGen[gj] = selJets[gj].E();
- }
-
- TMath::Sort(nGenSel, eGen, idxGen);
- for (Int_t ig = 0; ig < nGenSel; ig++)
- {
- jetGen[ig] = selJets[idxGen[ig]];
- }
-
- fhXSec->Fill(jetGen[0].Pt(), fXsection);
-
-// AliStack * stack = mcEvent->Stack();
-
- TClonesArray *tca = dynamic_cast<TClonesArray*>(fAOD->FindListObject(AliAODMCParticle::StdBranchName()));
- if(!tca) return;
- Int_t nMCtracks = tca->GetEntries();
- Double_t * eTracksMC = new Double_t[kTracks];
- Double_t pTracksMC[kTracks];
- Int_t * idxTracksMC = new Int_t[kTracks];
- TLorentzVector jetTracksMC[kTracks];
- TLorentzVector jetTracksSortMC[kTracks];
- TVector3 pTrackMC[kTracks];
- TLorentzVector vTrackMCAll[kTracks];
- Double_t pTrackMCAll[kTracks];
- TLorentzVector vTrackMC[kTracks];
- TVector3 pTrackMCBoost[kTracks];
- Double_t eventShapes[4];
-
- Int_t nAccTr = 0;
- Int_t nInJet[kMaxJets];
- TLorentzVector inJetPartV[kMaxJets][kTracks];
- Int_t nAllTracksMC = 0;
-
- for(Int_t iTrack = 0; iTrack < nMCtracks; iTrack++)
- {
- // TParticle * part = (TParticle*)stack->Particle(iTrack);
- AliAODMCParticle *part = dynamic_cast<AliAODMCParticle*>(tca->At(iTrack));
- if (!part) continue;
- if(!part->IsPhysicalPrimary())continue;
- Double_t fEta = part->Eta();
- if(TMath::Abs(fEta) > .9) continue;
- vTrackMCAll[nAllTracksMC].SetPxPyPzE(part->Px(), part->Py(), part->Pz(), part->E());
- pTrackMCAll[nAllTracksMC] = part->Pt();
- nAllTracksMC++;
- }
- if(nAllTracksMC == 0) return;
- for(Int_t iJet = 0; iJet < nGenSel; iJet++)
- {
- Int_t nJetTracks = 0;
+
+ TMath::Sort(nAllTracksMC, pTrackMCAll, idxTracksMC);
for(Int_t i = 0; i < nAllTracksMC; i++)
{
- Double_t dPhi = (jetGen[iJet].Phi()-vTrackMCAll[i].Phi());
- if(dPhi > TMath::Pi()) dPhi = dPhi - 2.*TMath::Pi();
- if(dPhi < (-1.*TMath::Pi())) dPhi = dPhi + 2.*TMath::Pi();
- Double_t dEta = (jetGen[iJet].Eta()-vTrackMCAll[i].Eta());
- Double_t deltaR = TMath::Sqrt(dPhi*dPhi+dEta*dEta);
- if(deltaR < fR && vTrackMCAll[i].Pt() > 1.5)
+ jetTracksSortMC[i] = vTrackMCAll[idxTracksMC[i]];
+ pTrackMC[i].SetXYZ(jetTracksSortMC[i].Px(), jetTracksSortMC[i].Py(), jetTracksSortMC[i].Pz());
+ vTrackMC[i].SetPxPyPzE(jetTracksSortMC[i].Px(), jetTracksSortMC[i].Py(), jetTracksSortMC[i].Pz(), jetTracksSortMC[i].E());
+ }
+
+ n01MC = pTrackMC[0].Unit();
+ n01MC.SetZ(0.);
+
+ //Thrust calculation, iterative method
+ if(nGenSel > 1)
+ {
+ // if(fGlobVar == 1)
+ // {
+ if(fDebug)Printf("**************Shapes for MC*************");
+ AliAnalysisHelperJetTasks::GetEventShapes(n01MC, pTrackMC, nAllTracksMC, eventShapes);
+ // }
+ if(eventShapes[0] < 2/TMath::Pi()){
+ Double_t eventShapesTest[4];
+ TVector3 n01Test;
+ Int_t rnd_max = nAllTracksMC;
+ Int_t k = (rand()%rnd_max)+3;
+ while(TMath::Abs(pTrackMC[k].X()) < 10e-5 && TMath::Abs(pTrackMC[k].Y()) < 10e-5){
+ k--;
+ }
+ n01Test = pTrackMC[k].Unit();
+ n01Test.SetZ(0.);
+ AliAnalysisHelperJetTasks::GetEventShapes(n01Test, pTrackMC, nAllTracksMC, eventShapesTest);
+ eventShapes[0] = TMath::Max(eventShapes[0], eventShapesTest[0]);
+ if(TMath::Abs(eventShapes[0]-eventShapesTest[0]) < 10e-7) n01MC = n01Test;
+ }
+
+ Double_t s = eventShapes[1];
+ Double_t a = eventShapes[2];
+ Double_t c = eventShapes[3];
+
+ switch(nGenSel)
{
- jetTracksMC[nAccTr] = vTrackMCAll[i];
- eTracksMC[nAccTr] = vTrackMCAll[i].E();
- pTracksMC[nAccTr] = vTrackMCAll[i].Pt();
- inJetPartV[iJet][nJetTracks].SetPxPyPzE(vTrackMCAll[i].Px(), vTrackMCAll[i].Py(), vTrackMCAll[i].Pz(),vTrackMCAll[i].E());
- nAccTr++;
- nJetTracks++;
+ case 2:
+ {
+ fhAGen2->Fill(a);
+ fhSGen2->Fill(s);
+ fhCGen2->Fill(c);
+ }
+ break;
+ case 3:
+ {
+ fhAGen3->Fill(a);
+ fhSGen3->Fill(s);
+ fhCGen3->Fill(c);
+ }
+ break;
+ }
+ Double_t thrust01MC = eventShapes[0];
+
+ switch(nGenSel)
+ {
+ case 2:
+ fhThrustGen2->Fill(thrust01MC, fXsection);
+ break;
+ case 3:
+ fhThrustGen3->Fill(thrust01MC, fXsection);
+ break;
}
}
- nInJet[iJet] = nJetTracks;
- }
-
- if(nAccTr == 0) return;
- if(fDebug)Printf("*********** Number of Jets : %d ***************\n", nGenSel);
- Double_t pTav[kMaxJets];
- for(Int_t i = 0; i < nGenSel; i++)
- {
- Double_t pTsum = 0;
- if(fDebug)Printf("*********** Number of particles in Jet %d = %d *******************\n", i+3, nInJet[i]);
- for(Int_t iT = 0; iT < nInJet[i]; iT++)
- {
- Double_t pt = inJetPartV[i][iT].Pt();
- pTsum += pt;
- }
- pTav[i] = pTsum/nInJet[i];
}
- TMath::Sort(nAllTracksMC, pTrackMCAll, idxTracksMC);
- for(Int_t i = 0; i < nAllTracksMC; i++)
- {
- jetTracksSortMC[i] = vTrackMCAll[idxTracksMC[i]];
- pTrackMC[i].SetXYZ(jetTracksSortMC[i].Px(), jetTracksSortMC[i].Py(), jetTracksSortMC[i].Pz());
- vTrackMC[i].SetPxPyPzE(jetTracksSortMC[i].Px(), jetTracksSortMC[i].Py(), jetTracksSortMC[i].Pz(), jetTracksSortMC[i].E());
- }
-
- TVector3 n01MC = pTrackMC[0].Unit();
- n01MC.SetZ(0.);
-
- //Thrust calculation, iterative method
- if(nGenSel > 1)
- {
-// if(fGlobVar == 1)
-// {
- if(fDebug)Printf("**************Shapes for MC*************");
- AliAnalysisHelperJetTasks::GetEventShapes(n01MC, pTrackMC, nAllTracksMC, eventShapes);
-// }
- if(eventShapes[0] < 2/TMath::Pi()){
- Double_t eventShapesTest[4];
- TVector3 n01Test;
- Int_t rnd_max = nAllTracksMC;
- Int_t k = (rand()%rnd_max)+3;
- while(TMath::Abs(pTrackMC[k].X()) < 10e-5 && TMath::Abs(pTrackMC[k].Y()) < 10e-5){
- k--;
- }
- n01Test = pTrackMC[k].Unit();
- n01Test.SetZ(0.);
- AliAnalysisHelperJetTasks::GetEventShapes(n01Test, pTrackMC, nAllTracksMC, eventShapesTest);
- eventShapes[0] = TMath::Max(eventShapes[0], eventShapesTest[0]);
- if(TMath::Abs(eventShapes[0]-eventShapesTest[0]) < 10e-7) n01MC = n01Test;
+
+ //rest frame MC jets
+ for (Int_t i = 0; i < nGenSel; ++i)
+ {
+ vGen[i].SetPxPyPzE(jetGen[i].Px(), jetGen[i].Py(), jetGen[i].Pz(), jetGen[i].E());
+ pGen[i].SetXYZ(vGen[i].Px(), vGen[i].Py(), vGen[i].Pz());
+ vsumGen += vGen[i];
}
-
- Double_t s = eventShapes[1];
- Double_t a = eventShapes[2];
- Double_t c = eventShapes[3];
-
- switch(nGenSel)
+ if(tca){
+ if(eventShapes[0] > 0.8 && nGenSel > 1)
{
- case 2:
- {
- fhAGen2->Fill(a);
- fhSGen2->Fill(s);
- fhCGen2->Fill(c);
- }
- break;
- case 3:
- {
- fhAGen3->Fill(a);
- fhSGen3->Fill(s);
- fhCGen3->Fill(c);
- }
- break;
+ for(Int_t i = 0; i < nGenSel; i++)
+ fhdPhiThrustGen->Fill(n01MC.DeltaPhi(pGen[i]), jetGen[i].E());
}
- Double_t thrust01MC = eventShapes[0];
-
- switch(nGenSel)
+
+ if(eventShapes[0] <= 0.8 && nGenSel > 1)
{
- case 2:
- fhThrustGen2->Fill(thrust01MC, fXsection);
- break;
- case 3:
- fhThrustGen3->Fill(thrust01MC, fXsection);
- break;
+ for(Int_t i = 0; i < nGenSel; i++)
+ fhdPhiThrustGenALL->Fill(n01MC.DeltaPhi(pGen[i]), jetGen[i].E());
}
}
-
-
- //rest frame MC jets
- for (Int_t i = 0; i < nGenSel; ++i)
- {
- vGen[i].SetPxPyPzE(jetGen[i].Px(), jetGen[i].Py(), jetGen[i].Pz(), jetGen[i].E());
- pGen[i].SetXYZ(vGen[i].Px(), vGen[i].Py(), vGen[i].Pz());
- vsumGen += vGen[i];
- }
- if(eventShapes[0] > 0.8 && nGenSel > 1)
- {
- for(Int_t i = 0; i < nGenSel; i++)
- fhdPhiThrustGen->Fill(n01MC.DeltaPhi(pGen[i]), jetGen[i].E());
- }
-
- if(eventShapes[0] <= 0.8 && nGenSel > 1)
- {
- for(Int_t i = 0; i < nGenSel; i++)
- fhdPhiThrustGenALL->Fill(n01MC.DeltaPhi(pGen[i]), jetGen[i].E());
- }
-
- Double_t fPxGen = vsumGen.Px();
- Double_t fPyGen = vsumGen.Py();
- Double_t fPzGen = vsumGen.Pz();
- Double_t fEGen = vsumGen.E();
-
- Double_t eRestGen[kMaxJets];
- for (Int_t j = 0; j < nGenSel; j++)
- {
- vGen[j].Boost(-fPxGen/fEGen, -fPyGen/fEGen, -fPzGen/fEGen);
- eRestGen[j] = vGen[j].E();
- }
-
- for (Int_t j = 0; j < nAccTr; j++)
- {
- vTrackMC[j].Boost(-fPxGen/fEGen, -fPyGen/fEGen, -fPzGen/fEGen);
- pTrackMCBoost[j].SetXYZ(vTrackMC[j].Px(),vTrackMC[j].Py(),vTrackMC[j].Pz());
- }
-
- Int_t idxRestGen[kMaxJets];
- TMath::Sort(nGenSel, eRestGen, idxRestGen);
- for(Int_t j = 0; j < nGenSel; j++)
- {
- vRestGen[j] = vGen[idxRestGen[j]];
- eSumGen += vRestGen[j].E();
- }
+
+ Double_t fPxGen = vsumGen.Px();
+ Double_t fPyGen = vsumGen.Py();
+ Double_t fPzGen = vsumGen.Pz();
+ Double_t fEGen = vsumGen.E();
+
+ Double_t eRestGen[kMaxJets];
+ for (Int_t j = 0; j < nGenSel; j++)
+ {
+ vGen[j].Boost(-fPxGen/fEGen, -fPyGen/fEGen, -fPzGen/fEGen);
+ eRestGen[j] = vGen[j].E();
+ }
+
+ for (Int_t j = 0; j < nAccTr; j++)
+ {
+ vTrackMC[j].Boost(-fPxGen/fEGen, -fPyGen/fEGen, -fPzGen/fEGen);
+ pTrackMCBoost[j].SetXYZ(vTrackMC[j].Px(),vTrackMC[j].Py(),vTrackMC[j].Pz());
+ }
+
+ Int_t idxRestGen[kMaxJets];
+ TMath::Sort(nGenSel, eRestGen, idxRestGen);
+ for(Int_t j = 0; j < nGenSel; j++)
+ {
+ vRestGen[j] = vGen[idxRestGen[j]];
+ eSumGen += vRestGen[j].E();
+ }
- if (nGenSel == 3)
- {
- // if(nInJet[0] < 3 || nInJet[1] < 3 || nInJet[2] < 3) return;
- // if(pRestGen[1].DeltaPhi(pRestGen[2]) > 0.95 && pRestGen[1].DeltaPhi(pRestGen[2]) < 1.15)
- // {
+ if (nGenSel == 3)
+ {
+ // if(nInJet[0] < 3 || nInJet[1] < 3 || nInJet[2] < 3) return;
+ // if(pRestGen[1].DeltaPhi(pRestGen[2]) > 0.95 && pRestGen[1].DeltaPhi(pRestGen[2]) < 1.15)
+ // {
- for(Int_t i = 0; i < nGenSel; i++)
- {
- xGen[i] = 2*vRestGen[i].E()/eSumGen;
+ for(Int_t i = 0; i < nGenSel; i++)
+ {
+ xGen[i] = 2*vRestGen[i].E()/eSumGen;
}
- if(fDebug)Printf("***************** Values of Dalitz variables are : %f, %f, %f ****************\n", xGen[0], xGen[1], xGen[2]);
-
- if(fDebug)Printf("***************** fXSection = %f ******************\n", fXsection);
- if(eSumGen <= 60)
- fhX3X4Gen60->Fill(xGen[0], xGen[1], fXsection);
-
- if(eSumGen > 60 && eSumGen <= 100)
- fhX3X4Gen60100->Fill(xGen[0], xGen[1], fXsection);
-
- if(eSumGen > 100)
- fhX3X4Gen100->Fill(xGen[0], xGen[1], fXsection);
-
- FillTopology(fhX3X4Gen, fhMu34Gen, fhMu45Gen, fhMu35Gen, xGen, pRestGen, fXsection);
- }
-
+ if(fDebug)Printf("***************** Values of Dalitz variables are : %f, %f, %f ****************\n", xGen[0], xGen[1], xGen[2]);
+
+ if(fDebug)Printf("***************** fXSection = %f ******************\n", fXsection);
+ if(eSumGen <= 60)
+ fhX3X4Gen60->Fill(xGen[0], xGen[1], fXsection);
+
+ if(eSumGen > 60 && eSumGen <= 100)
+ fhX3X4Gen60100->Fill(xGen[0], xGen[1], fXsection);
+
+ if(eSumGen > 100)
+ fhX3X4Gen100->Fill(xGen[0], xGen[1], fXsection);
+
+ FillTopology(fhX3X4Gen, fhMu34Gen, fhMu45Gen, fhMu35Gen, xGen, pRestGen, fXsection);
+ }
+ }
+
//_______________________________________________histos for MC_____________________________________________________
{
// if(pRest[1].DeltaPhi(pRest[2]) > 0.95 && pRest[1].DeltaPhi(pRest[2]) < 1.15)
// {
- fhInOut->Fill(nGenSel);
+ if(fUseMC) fhInOut->Fill(nGenSel);
// for(Int_t j = 0; j < nTracksALL; j++)
// {
// vTracksAll[j].Boost(-fPx/fE, -fPy/fE, -fPz/fE);