#include <AliMCEventHandler.h>
#include "TRandom3.h"
#include "AliTriggerAnalysis.h"
+#include "AliESDCentrality.h"
class AliESDTrackCuts;
class AliCFContainer;
fKFReconstructedGammasV0Index(),
fRemovePileUp(kFALSE),
fSelectV0AND(kFALSE),
- fTriggerAnalysis(NULL)
+ fTriggerAnalysis(NULL),
+ fMultiplicity(0),
+ fUseMultiplicity(0),
+ fUseMultiplicityBin(0),
+ fUseCentrality(0),
+ fUseCentralityBin(0)
{
// Default constructor
fKFReconstructedGammasV0Index(),
fRemovePileUp(kFALSE),
fSelectV0AND(kFALSE),
- fTriggerAnalysis(NULL)
+ fTriggerAnalysis(NULL),
+ fMultiplicity(0),
+ fUseMultiplicity(0),
+ fUseMultiplicityBin(0),
+ fUseCentrality(0),
+ fUseCentralityBin(0)
{
// Common I/O in slot 0
DefineInput (0, TChain::Class());
// Using standard function for setting Cuts
Bool_t selectPrimaries=kTRUE;
fEsdTrackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010(selectPrimaries);
+ fEsdTrackCuts->SetMaxDCAToVertexZ(2);
fEsdTrackCuts->SetEtaRange(-0.8, 0.8);
fEsdTrackCuts->SetPtRange(0.15);
return;
}
-
Bool_t v0A = fTriggerAnalysis->IsOfflineTriggerFired(fV0Reader->GetESDEvent(), AliTriggerAnalysis::kV0A);
Bool_t v0C = fTriggerAnalysis->IsOfflineTriggerFired(fV0Reader->GetESDEvent(), AliTriggerAnalysis::kV0C);
Bool_t v0AND = v0A && v0C;
fHistograms->FillHistogram("ESD_EventQuality",eventQuality);
return;
}
+ fMultiplicity = fEsdTrackCuts->CountAcceptedTracks(fV0Reader->GetESDEvent());
+
+ if( CalculateMultiplicityBin() != fUseMultiplicityBin){
+ eventQuality=6;
+ fHistograms->FillHistogram("ESD_EventQuality",eventQuality);
+ return;
+ }
+ if(fV0Reader->GetIsHeavyIon()){
+ if(fUseCentrality>0){
+ AliESDCentrality *esdCentrality = fV0Reader->GetESDEvent()->GetCentrality();
+ Int_t centralityC = -1;
+
+ if(fUseCentrality==1){
+ centralityC = esdCentrality->GetCentralityClass10("V0M");
+ if( centralityC != fUseCentralityBin ){
+ eventQuality=7;
+ fHistograms->FillHistogram("ESD_EventQuality",eventQuality);
+ return;
+ }
+ }
+
+ if(fUseCentrality==2){
+ centralityC = esdCentrality->GetCentralityClass10("CL1");
+ if( centralityC != fUseCentralityBin ){
+ eventQuality=7;
+ fHistograms->FillHistogram("ESD_EventQuality",eventQuality);
+ return;
+ }
+ }
+ }
+ }
eventQuality=3;
fHistograms->FillHistogram("ESD_EventQuality",eventQuality);
+
+
+ fHistograms->FillHistogram("ESD_NumberOfGoodESDTracks",fMultiplicity);
+ if (fV0Reader->GetNumberOfContributorsVtx()>=1){
+ fHistograms->FillHistogram("ESD_NumberOfGoodESDTracksVtx",fMultiplicity);
+ }
+
+
+
// Process the MC information
if(fDoMCTruth){
ProcessMCData();
Int_t zBin = fHistograms->GetZBin(ePos->Vz());
Int_t phiBin = fHistograms->GetPhiBin(particle->Phi());
Double_t rFMD=30;
+ Double_t rITSTPCMin=50;
+ Double_t rITSTPCMax=80;
TVector3 vtxPos(ePos->Vx(),ePos->Vy(),ePos->Vz());
fHistograms->FillHistogram(nameMCMappingFMDPhiInZ, vtxPos.Phi());
}
+ if(ePos->R()>rITSTPCMin && ePos->R()<rITSTPCMax){
+ TString nameMCMappingITSTPCPhiInZ="";
+ nameMCMappingITSTPCPhiInZ.Form("MC_Conversion_Mapping_ITSTPC_Phi_in_Z_%02d",zBin);
+ fHistograms->FillHistogram(nameMCMappingITSTPCPhiInZ, vtxPos.Phi());
+ }
+
TString nameMCMappingRInZ="";
nameMCMappingRInZ.Form("MC_Conversion_Mapping_R_in_Z_%02d",zBin);
fHistograms->FillHistogram(nameMCMappingRInZ,ePos->R() );
Int_t zBin = fHistograms->GetZBin(fV0Reader->GetZ());
Int_t phiBin = fHistograms->GetPhiBin(fV0Reader->GetNegativeTrackPhi());
Double_t rFMD=30;
-
+ Double_t rITSTPCMin=50;
+ Double_t rITSTPCMax=80;
// Double_t motherCandidateEta= fV0Reader->GetMotherCandidateEta();
fHistograms->FillHistogram(nameESDMappingFMDPhiInZ, vtxConv.Phi());
}
+ if(fV0Reader->GetXYRadius()>rITSTPCMin && fV0Reader->GetXYRadius()<rITSTPCMax){
+ TString nameESDMappingITSTPCPhiInZ="";
+ nameESDMappingITSTPCPhiInZ.Form("ESD_Conversion_Mapping_ITSTPC_Phi_in_Z_%02d",zBin);
+ fHistograms->FillHistogram(nameESDMappingITSTPCPhiInZ, vtxConv.Phi());
+ }
TString nameESDMappingRInZ="";
nameESDMappingRInZ.Form("ESD_Conversion_Mapping_R_in_Z_%02d",zBin);
//----------------------------------- checking for "real" conversions (MC match) --------------------------------------
if(fDoMCTruth){
+ TParticle * negativeMC = (TParticle*)fV0Reader->GetNegativeMCParticle();
+ TParticle * positiveMC = (TParticle*)fV0Reader->GetPositiveMCParticle();
if(fV0Reader->HasSameMCMother() == kFALSE){
+ fHistograms->FillHistogram("ESD_TrueConvCombinatorial_R", fV0Reader->GetXYRadius());
+ if(TMath::Abs(negativeMC->GetPdgCode())==11 && TMath::Abs(positiveMC->GetPdgCode())==11){
+ fHistograms->FillHistogram("ESD_TrueConvCombinatorialElec_R", fV0Reader->GetXYRadius());
+ }
continue;
}
- TParticle * negativeMC = (TParticle*)fV0Reader->GetNegativeMCParticle();
- TParticle * positiveMC = (TParticle*)fV0Reader->GetPositiveMCParticle();
+ // Moved up to check true electron background
+ // TParticle * negativeMC = (TParticle*)fV0Reader->GetNegativeMCParticle();
+ // TParticle * positiveMC = (TParticle*)fV0Reader->GetPositiveMCParticle();
if(TMath::Abs(negativeMC->GetPdgCode())!=11 || TMath::Abs(positiveMC->GetPdgCode())!=11){
continue;
(negativeMC->GetUniqueID() == 0 && positiveMC->GetUniqueID() ==0) ){// fill r distribution for Dalitz decays
if(fV0Reader->GetMotherMCParticle()->GetPdgCode() == 111){ //pi0
fHistograms->FillHistogram("ESD_TrueDalitzContamination_R", fV0Reader->GetXYRadius());
+ fHistograms->FillHistogram("ESD_TrueConvDalitzPi0_R", fV0Reader->GetXYRadius());
}
+ if(fV0Reader->GetMotherMCParticle()->GetPdgCode() == 221){ //eta
+ fHistograms->FillHistogram("ESD_TrueConvDalitzEta_R", fV0Reader->GetXYRadius());
+ }
+
}
if(negativeMC->GetUniqueID() != 5 || positiveMC->GetUniqueID() !=5){// check if the daughters come from a conversion
// delete omegaCandidatePipPinPi0;
}
}
- } // checking ig gammajet because in that case the chargedparticle list is created
+ if (posPiKF) delete posPiKF; posPiKF=NULL; if (negPiKF) delete negPiKF; negPiKF=NULL;
+ } // checking ig gammajet because in that case the chargedparticle list is created
}
numberOfESDTracks++;
}
}
- fHistograms->FillHistogram("ESD_NumberOfGoodESDTracks",numberOfESDTracks);
-
- if (fV0Reader->GetNumberOfContributorsVtx()>=1){
- fHistograms->FillHistogram("ESD_NumberOfGoodESDTracksVtx",numberOfESDTracks);
- }
+// Moved to UserExec using CountAcceptedTracks function. runjet is not needed by default
+// fHistograms->FillHistogram("ESD_NumberOfGoodESDTracks",numberOfESDTracks);
+// cout<<"esdtracks::"<< numberOfESDTracks<<endl;
+// if (fV0Reader->GetNumberOfContributorsVtx()>=1){
+// fHistograms->FillHistogram("ESD_NumberOfGoodESDTracksVtx",numberOfESDTracks);
+// }
}
void AliAnalysisTaskGammaConversion::RecalculateV0ForGamma(){
//recalculates v0 for gamma
// return tlVtrack;
}
-
Int_t AliAnalysisTaskGammaConversion::GetProcessType(const AliMCEvent * mcEvt) {
// Determine if the event was generated with pythia or phojet and return the process type
AliError(Form("Unknown header: %s", htmp->IsA()->GetName()));
return kProcUnknown;
}
+
+
+Int_t AliAnalysisTaskGammaConversion::CalculateMultiplicityBin(){
+ // Get Centrality bin
+
+ Int_t multiplicity = 0;
+
+ if ( fUseMultiplicity == 1 ) {
+
+ if (fMultiplicity>= 0 && fMultiplicity<= 5) multiplicity=1;
+ if (fMultiplicity>= 6 && fMultiplicity<= 9) multiplicity=2;
+ if (fMultiplicity>=10 && fMultiplicity<=14) multiplicity=3;
+ if (fMultiplicity>=15 && fMultiplicity<=22) multiplicity=4;
+ if (fMultiplicity>=23 ) multiplicity=5;
+
+ }
+ return multiplicity;
+}