fhMCPtZTCharged(0), fhMCPtHbpZTCharged(0),
fhMCPtTrigPout(0), fhMCPtAssocDeltaPhi(0),
//Mixing
- fhNEventsTrigger(0),
- fhNtracksAll(0), fhNtracksTrigger(0), fhNtracksMB(0),
- fhNclustersAll(0), fhNclustersTrigger(0), fhNclustersMB(0),
+ fhNEventsTrigger(0), fhNtracksMB(0), fhNclustersMB(0),
fhMixDeltaPhiCharged(0), fhMixDeltaPhiDeltaEtaCharged(0),
- fhMixXECharged(0), fhMixHbpXECharged(0),
+ fhMixXECharged(0), fhMixXEUeCharged(0), fhMixHbpXECharged(0),
fhMixDeltaPhiChargedAssocPtBin(),
fhMixDeltaPhiChargedAssocPtBinDEta08(),
fhMixDeltaPhiChargedAssocPtBinDEta0(),
}
}
+//______________________________________________________
+void AliAnaParticleHadronCorrelation::FillEventMixPool()
+{
+ // Fill the pool with tracks if requested
+
+ if(DoOwnMix())
+ {
+ FillChargedEventMixPool();
+
+ if(OnlyIsolated() || fFillNeutralEventMixPool)
+ FillNeutralEventMixPool();
+ }
+
+}
+
//_____________________________________________________________
void AliAnaParticleHadronCorrelation::FillChargedEventMixPool()
{
// Mixed event pool filling for tracks
-
- //printf("FillChargedEventMixPool for %s\n",GetInputAODName().Data());
-
+
if(fUseMixStoredInReader && GetReader()->GetLastTracksMixedEvent() == GetEventNumber())
{
//printf("%s : Pool already filled for this event !!!\n",GetInputAODName().Data());
}
Int_t nTracks = GetCTSTracks()->GetEntriesFast();
-
- fhNtracksAll->Fill(nTracks);
-
+
AliAnalysisManager * manager = AliAnalysisManager::GetAnalysisManager();
AliInputEventHandler * inputHandler = dynamic_cast<AliInputEventHandler*>(manager->GetInputEventHandler());
if(!inputHandler) return ;
-
- if( inputHandler->IsEventSelected( ) & GetReader()->GetEventTriggerMask() )
- {
- fhNtracksTrigger->Fill(nTracks);
- }
-
+
// Do mixing only with MB event (or the chosen mask), if not skip
if( !(inputHandler->IsEventSelected( ) & GetReader()->GetMixEventTriggerMask()) ) return ;
//else pl = GetEMCALClusters();
Int_t nClusters = pl->GetEntriesFast();
- fhNclustersAll->Fill(nClusters);
if(fUseMixStoredInReader && GetReader()->GetLastCaloMixedEvent() == GetEventNumber())
{
AliInputEventHandler * inputHandler = dynamic_cast<AliInputEventHandler*>(manager->GetInputEventHandler());
if(!inputHandler) return ;
-
- if( inputHandler->IsEventSelected( ) & GetReader()->GetEventTriggerMask() )
- {
- fhNclustersTrigger->Fill(nClusters);
- }
-
+
// Do mixing only with MB event (or the chosen mask), if not skip
if( !(inputHandler->IsEventSelected( ) & GetReader()->GetMixEventTriggerMask()) ) return ;
fhEventMixBin->SetXTitle("bin");
outputContainer->Add(fhEventMixBin) ;
- fhNtracksAll=new TH1F("hNtracksAll","Number of tracks w/o event trigger",2000,0,2000);
- outputContainer->Add(fhNtracksAll);
-
- fhNtracksTrigger=new TH1F("hNtracksTriggerEvent","Number of tracks w/ event trigger",2000,0,2000);
- outputContainer->Add(fhNtracksTrigger);
-
fhNtracksMB=new TH1F("hNtracksMBEvent","Number of tracks w/ event trigger kMB",2000,0,2000);
outputContainer->Add(fhNtracksMB);
if(fFillNeutralEventMixPool || OnlyIsolated())
{
- fhNclustersAll=new TH1F("hNclustersAll","Number of clusters w/o event trigger",2000,0,2000);
- outputContainer->Add(fhNclustersAll);
-
- fhNclustersTrigger=new TH1F("hNclustersTriggerEvent","Number of clusters w/ event trigger",2000,0,2000);
- outputContainer->Add(fhNclustersTrigger);
-
fhNclustersMB=new TH1F("hNclustersMBEvent","Number of clusters w/ event trigger kMB",2000,0,2000);
outputContainer->Add(fhNclustersMB);
}
fhMixXECharged->SetYTitle("x_{E}");
fhMixXECharged->SetXTitle("p_{T trigger} (GeV/c)");
outputContainer->Add(fhMixXECharged);
+
+ fhMixXEUeCharged =
+ new TH2F("hMixXEUeCharged","Mixed event : x_{E} for charged tracks in Ue region",
+ nptbins,ptmin,ptmax,200,0.,2.);
+ fhMixXEUeCharged->SetYTitle("x_{E}");
+ fhMixXEUeCharged->SetXTitle("p_{T trigger} (GeV/c)");
+ outputContainer->Add(fhMixXEUeCharged);
- fhMixHbpXECharged =
+ fhMixHbpXECharged =
new TH2F("hMixHbpXECharged","mixed event : #xi = ln(1/x_{E}) with charged hadrons",
nptbins,ptmin,ptmax,200,0.,10.);
fhMixHbpXECharged->SetYTitle("ln(1/x_{E})");
Double_t v[3] = {0,0,0}; //vertex ;
GetReader()->GetVertex(v);
if(!GetMixedEvent() && TMath::Abs(v[2]) > GetZvertexCut()) return ;
-
- // Fill the pool with tracks if requested
- if(DoOwnMix())
- {
- FillChargedEventMixPool();
- if(OnlyIsolated() || fFillNeutralEventMixPool)
- FillNeutralEventMixPool();
- }
-
+
//Loop on stored AOD particles, find leading trigger
Double_t ptTrig = fMinTriggerPt ;
fLeadingTriggerIndex = -1 ;
pout = pt*TMath::Sin(deltaPhi) ;
//delta phi cut for momentum imbalance correlation
- if ( (deltaPhi > fDeltaPhiMinCut) && (deltaPhi < fDeltaPhiMaxCut) )
+ if ( (deltaPhi > fDeltaPhiMinCut) && (deltaPhi < fDeltaPhiMaxCut) )
{
FillChargedMomentumImbalanceHistograms(ptTrig, pt, xE, hbpXE, zT, hbpZT, pout,
nTracks, track->Charge(), bin, decay,outTOF,mcTag);
- }
+ }
+
if ( (deltaPhi > fUeDeltaPhiMinCut) && (deltaPhi < fUeDeltaPhiMaxCut) )
{ //UE study
if(xE > 0 ) hbpXE = TMath::Log(1./xE);
else hbpXE =-100;
- if ( (deltaPhi > fDeltaPhiMinCut) && (deltaPhi < fDeltaPhiMaxCut) )
+ if ( (deltaPhi > fDeltaPhiMinCut) && (deltaPhi < fDeltaPhiMaxCut) )
{
fhMixXECharged->Fill(ptTrig,xE);
fhMixHbpXECharged->Fill(ptTrig,hbpXE);
}
-
+
+ if ( (deltaPhi > fUeDeltaPhiMinCut) && (deltaPhi < fUeDeltaPhiMaxCut) )
+ {
+ //Underlying event region
+ Double_t randomphi = gRandom->Uniform(fDeltaPhiMinCut,fDeltaPhiMaxCut);
+ Double_t uexE = -(ptAssoc/ptTrig)*TMath::Cos(randomphi);
+
+ if(uexE < 0.) uexE = -uexE;
+
+ fhMixXEUeCharged->Fill(ptTrig,uexE);
+ }
+
if(bin < 0) continue ; // this pt bin was not considered
if(TMath::Abs(deltaEta) > 0.8)