]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG4/GammaConv/AliV0Reader.cxx
IsHeavyIon flag, added Centrality Selection, Add mising Cut for Nch, extra histograms...
[u/mrichter/AliRoot.git] / PWG4 / GammaConv / AliV0Reader.cxx
index 4334e0212e2c96e0ba302f8a67ba88f7e00ae866..a487aeab464da5d55410b4ba4b74b596499f6e34 100644 (file)
@@ -85,11 +85,14 @@ AliV0Reader::AliV0Reader() :
   fDoMC(kFALSE),
   fMaxVertexZ(100.),// 100 cm(from the 0)
   fMaxR(10000),// 100 meter(outside of ALICE)
+  fMinR(0),// 100 meter(outside of ALICE)
   fEtaCut(0.),
+  fRapidityMesonCut(0.),
   fPtCut(0.),
   fSinglePtCut(0.),
   fMaxZ(0.),
   fMinClsTPC(0.),
+  fMinClsTPCToF(0.),
   fLineCutZRSlope(0.),
   fLineCutZValue(0.),
   fChi2CutConversion(0.),
@@ -121,6 +124,7 @@ AliV0Reader::AliV0Reader() :
   fNSigmaMass(0.),
   fUseImprovedVertex(kFALSE),
   fUseOwnXYZCalculation(kFALSE),
+  fUseConstructGamma(kFALSE),
   fDoCF(kFALSE),
   fUseOnFlyV0Finder(kTRUE),
   fUpdateV0AlreadyCalled(kFALSE),
@@ -133,7 +137,10 @@ AliV0Reader::AliV0Reader() :
   fBGEventInitialized(kFALSE),
   fEsdTrackCuts(NULL),
   fNumberOfESDTracks(0),
-  nEventsForBGCalculation(10)
+  nEventsForBGCalculation(20),
+  fUseChargedTrackMultiplicityForBG(kTRUE),
+  fNumberOfGoodV0s(0),
+  fIsHeavyIon(0)
 {
   //fESDpid = new AliESDpid;   
 }
@@ -175,11 +182,14 @@ AliV0Reader::AliV0Reader(const AliV0Reader & original) :
   fDoMC(kFALSE),
   fMaxVertexZ(original.fMaxVertexZ),
   fMaxR(original.fMaxR),
+  fMinR(original.fMinR),
   fEtaCut(original.fEtaCut),
+  fRapidityMesonCut(original.fRapidityMesonCut),
   fPtCut(original.fPtCut),
   fSinglePtCut(original.fSinglePtCut),
   fMaxZ(original.fMaxZ),
   fMinClsTPC(original.fMinClsTPC),
+  fMinClsTPCToF(original.fMinClsTPCToF),
   fLineCutZRSlope(original.fLineCutZRSlope),
   fLineCutZValue(original.fLineCutZValue),
   fChi2CutConversion(original.fChi2CutConversion),
@@ -211,6 +221,7 @@ AliV0Reader::AliV0Reader(const AliV0Reader & original) :
   fNSigmaMass(original.fNSigmaMass),
   fUseImprovedVertex(original.fUseImprovedVertex),
   fUseOwnXYZCalculation(original.fUseOwnXYZCalculation),
+  fUseConstructGamma(original.fUseConstructGamma),
   fDoCF(original.fDoCF),
   fUseOnFlyV0Finder(original.fUseOnFlyV0Finder),
   fUpdateV0AlreadyCalled(original.fUpdateV0AlreadyCalled),
@@ -223,7 +234,10 @@ AliV0Reader::AliV0Reader(const AliV0Reader & original) :
   fBGEventInitialized(original.fBGEventInitialized),
   fEsdTrackCuts(original.fEsdTrackCuts),
   fNumberOfESDTracks(original.fNumberOfESDTracks),
-  nEventsForBGCalculation(original.nEventsForBGCalculation)
+  nEventsForBGCalculation(original.nEventsForBGCalculation),
+  fUseChargedTrackMultiplicityForBG(original.fUseChargedTrackMultiplicityForBG),
+  fNumberOfGoodV0s(original.fNumberOfGoodV0s),
+  fIsHeavyIon(original.fIsHeavyIon)
 {
        
 }
@@ -338,25 +352,51 @@ void AliV0Reader::Initialize(){
       
       Double_t *zBinLimitsArray = new Double_t[9];
       zBinLimitsArray[0] = -50.00;
-      zBinLimitsArray[1] = -4.07;
-      zBinLimitsArray[2] = -2.17;
-      zBinLimitsArray[3] = -0.69;
-      zBinLimitsArray[4] = 0.69;
-      zBinLimitsArray[5] = 2.17;
-      zBinLimitsArray[6] = 4.11;
+      zBinLimitsArray[1] = -3.375;
+      zBinLimitsArray[2] = -1.605;
+      zBinLimitsArray[3] = -0.225;
+      zBinLimitsArray[4] = 1.065;
+      zBinLimitsArray[5] = 2.445;
+      zBinLimitsArray[6] = 4.245;
       zBinLimitsArray[7] = 50.00;
       zBinLimitsArray[8] = 1000.00;
       
-      
       Double_t *multiplicityBinLimitsArray= new Double_t[6];
-      multiplicityBinLimitsArray[0] = 0;
-      multiplicityBinLimitsArray[1] = 8.5;
-      multiplicityBinLimitsArray[2] = 16.5;
-      multiplicityBinLimitsArray[3] = 27.5;
-      multiplicityBinLimitsArray[4] = 41.5;
-      multiplicityBinLimitsArray[5] = 100.;
-          
-      fBGEventHandler = new AliGammaConversionBGHandler(9,6,nEventsForBGCalculation);
+      if(fUseChargedTrackMultiplicityForBG == kTRUE){
+       multiplicityBinLimitsArray[0] = 0;
+       multiplicityBinLimitsArray[1] = 8.5;
+       multiplicityBinLimitsArray[2] = 16.5;
+       multiplicityBinLimitsArray[3] = 27.5;
+       multiplicityBinLimitsArray[4] = 41.5;
+       multiplicityBinLimitsArray[5] = 100.;
+       if(fIsHeavyIon){
+         multiplicityBinLimitsArray[0] = 0;
+         multiplicityBinLimitsArray[1] = 200.;
+         multiplicityBinLimitsArray[2] = 500.;
+         multiplicityBinLimitsArray[3] = 1000.;
+         multiplicityBinLimitsArray[4] = 1500.;
+         multiplicityBinLimitsArray[5] = 3000.;
+       }
+       fBGEventHandler = new AliGammaConversionBGHandler(9,6,nEventsForBGCalculation);
+      }
+      else{
+       multiplicityBinLimitsArray[0] = 2;
+       multiplicityBinLimitsArray[1] = 3;
+       multiplicityBinLimitsArray[2] = 4;
+       multiplicityBinLimitsArray[3] = 5;
+       multiplicityBinLimitsArray[4] = 9999;
+       if(fIsHeavyIon){
+         multiplicityBinLimitsArray[0] = 2;
+         multiplicityBinLimitsArray[1] = 10;
+         multiplicityBinLimitsArray[2] = 30;
+         multiplicityBinLimitsArray[3] = 50;
+         multiplicityBinLimitsArray[4] = 9999;
+       }
+
+       fBGEventHandler = new AliGammaConversionBGHandler(9,5,nEventsForBGCalculation);
+      }
+
+
       
       /*
       // ---------------------------------
@@ -564,7 +604,8 @@ Bool_t AliV0Reader::NextV0(){
       fCFManager->GetParticleContainer()->Fill(containerInput,kStepKinks);             // for CF       
     }
        
-
+    fHistograms->FillHistogram("ESD_AllV0sCurrentFinder_goodtracks_alfa_qt",armenterosQtAlfa[1],armenterosQtAlfa[0]);
     if(fDodEdxSigmaCut == kTRUE){
       if( fgESDpid->NumberOfSigmasTPC(fCurrentPositiveESDTrack,AliPID::kElectron)<fPIDnSigmaBelowElectronLine ||
          fgESDpid->NumberOfSigmasTPC(fCurrentPositiveESDTrack,AliPID::kElectron)>fPIDnSigmaAboveElectronLine ||
@@ -750,7 +791,15 @@ Bool_t AliV0Reader::NextV0(){
     if(fDoCF){
       fCFManager->GetParticleContainer()->Fill(containerInput,kStepR);                 // for CF
     }
+    if(GetXYRadius()<fMinR){ // cuts on distance from collision point
+      if(fHistograms != NULL){
+       fHistograms->FillHistogram("ESD_CutMinR_InvMass",GetMotherCandidateMass());
+      }
+      fCurrentV0IndexNumber++;
+      continue;
+    }
                
+
                
     if((TMath::Abs(fCurrentZValue)*fLineCutZRSlope)-fLineCutZValue > GetXYRadius() ){ // cuts out regions where we do not reconstruct
       if(fHistograms != NULL){
@@ -790,6 +839,25 @@ Bool_t AliV0Reader::NextV0(){
     if(fDoCF){
       fCFManager->GetParticleContainer()->Fill(containerInput,kStepMinClsTPC);         // for CF       
     }
+    Double_t NegclsToF = 0.;
+    if(fCurrentNegativeESDTrack->GetTPCNclsF()!=0  ){
+      NegclsToF = (Double_t)fCurrentNegativeESDTrack->GetNcls(1)/(Double_t)fCurrentNegativeESDTrack->GetTPCNclsF();
+    }
+
+    Double_t PosclsToF = 0.;
+    if(fCurrentPositiveESDTrack->GetTPCNclsF()!=0  ){
+      PosclsToF = (Double_t)fCurrentPositiveESDTrack->GetNcls(1)/(Double_t)fCurrentPositiveESDTrack->GetTPCNclsF();
+    }
+
+    if( NegclsToF < fMinClsTPCToF ||  PosclsToF < fMinClsTPCToF ){
+      if(fHistograms != NULL){
+       fHistograms->FillHistogram("ESD_CutMinNClsTPCToF_InvMass",GetMotherCandidateMass());
+      }
+      fCurrentV0IndexNumber++;
+      continue;
+    }
+
+
 
                
     if(fUseKFParticle){
@@ -886,6 +954,8 @@ Bool_t AliV0Reader::NextV0(){
 
     iResult=kTRUE;//means we have a v0 who survived all the cuts applied
                
+    fNumberOfGoodV0s++;
+
     fCurrentV0IndexNumber++;
                
     break;
@@ -932,13 +1002,16 @@ Bool_t AliV0Reader::UpdateV0Information(){
   if(fCurrentMotherKFCandidate != NULL){
     delete fCurrentMotherKFCandidate;
   }
-  fCurrentMotherKFCandidate = new AliKFParticle(*fCurrentNegativeKFParticle,*fCurrentPositiveKFParticle);
-       
-       
-  if(fPositiveTrackPID==-11 && fNegativeTrackPID==11){
-    fCurrentMotherKFCandidate->SetMassConstraint(0,fNSigmaMass);
+
+  if(fUseConstructGamma==kTRUE){
+    fCurrentMotherKFCandidate = new AliKFParticle;//(*fCurrentNegativeKFParticle,*fCurrentPositiveKFParticle);
+    fCurrentMotherKFCandidate->ConstructGamma(*fCurrentNegativeKFParticle,*fCurrentPositiveKFParticle);
+  }else{
+    fCurrentMotherKFCandidate = new AliKFParticle(*fCurrentNegativeKFParticle,*fCurrentPositiveKFParticle);
+    if(fPositiveTrackPID==-11 && fNegativeTrackPID==11){
+      fCurrentMotherKFCandidate->SetMassConstraint(0,fNSigmaMass);
+    }
   }
-       
   if(fUseImprovedVertex == kTRUE){
     AliKFVertex primaryVertexImproved(*GetPrimaryVertex());
     primaryVertexImproved+=*fCurrentMotherKFCandidate;
@@ -1006,7 +1079,13 @@ Bool_t AliV0Reader::UpdateV0Information(){
   
 
   if(fUseOwnXYZCalculation == kFALSE){
-    fCurrentV0->GetXYZ(fCurrentXValue,fCurrentYValue,fCurrentZValue);
+    if(fUseConstructGamma == kFALSE){
+      fCurrentV0->GetXYZ(fCurrentXValue,fCurrentYValue,fCurrentZValue);
+    }else{
+      fCurrentXValue=GetMotherCandidateKFCombination()->GetX();
+      fCurrentYValue=GetMotherCandidateKFCombination()->GetY();
+      fCurrentZValue=GetMotherCandidateKFCombination()->GetZ();
+    }
   }
   else{
     Double_t convpos[2];
@@ -1208,11 +1287,20 @@ void AliV0Reader::UpdateEventByEventData(){
   //see header file for documentation
   if(fCurrentEventGoodV0s->GetEntriesFast() >0 ){
     if(fCalculateBackground){
-      fBGEventHandler->AddEvent(fCurrentEventGoodV0s,fESDEvent->GetPrimaryVertex()->GetZ(),CountESDTracks());
-      //filling z and multiplicity histograms
-      fHistograms->FillHistogram("ESD_Z_distribution",fESDEvent->GetPrimaryVertex()->GetZ());
-      fHistograms->FillHistogram("ESD_multiplicity_distribution",CountESDTracks());
-      fHistograms->FillHistogram("ESD_ZvsMultiplicity",fESDEvent->GetPrimaryVertex()->GetZ(),CountESDTracks());
+      if(fUseChargedTrackMultiplicityForBG == kTRUE){
+       fBGEventHandler->AddEvent(fCurrentEventGoodV0s,fESDEvent->GetPrimaryVertex()->GetX(),fESDEvent->GetPrimaryVertex()->GetY(),fESDEvent->GetPrimaryVertex()->GetZ(),CountESDTracks());
+       //filling z and multiplicity histograms
+       fHistograms->FillHistogram("ESD_Z_distribution",fESDEvent->GetPrimaryVertex()->GetZ());
+       fHistograms->FillHistogram("ESD_multiplicity_distribution",CountESDTracks());
+       fHistograms->FillHistogram("ESD_ZvsMultiplicity",fESDEvent->GetPrimaryVertex()->GetZ(),CountESDTracks());
+      }
+      else{ // means we use #V0s for multiplicity
+       fBGEventHandler->AddEvent(fCurrentEventGoodV0s,fESDEvent->GetPrimaryVertex()->GetX(),fESDEvent->GetPrimaryVertex()->GetY(),fESDEvent->GetPrimaryVertex()->GetZ(),fNumberOfGoodV0s);
+       //filling z and multiplicity histograms
+       fHistograms->FillHistogram("ESD_Z_distribution",fESDEvent->GetPrimaryVertex()->GetZ());
+       fHistograms->FillHistogram("ESD_multiplicity_distribution",fNumberOfGoodV0s);
+       fHistograms->FillHistogram("ESD_ZvsMultiplicity",fESDEvent->GetPrimaryVertex()->GetZ(),fNumberOfGoodV0s);
+      }
     }
   }
   fCurrentEventGoodV0s->Delete();
@@ -1511,9 +1599,16 @@ Double_t AliV0Reader::GetConvPosZ(AliESDtrack* ptrack,AliESDtrack* ntrack, Doubl
    return convposz;
 }
 
-AliGammaConversionKFVector* AliV0Reader::GetBGGoodV0s(Int_t event){
-
-  return fBGEventHandler->GetBGGoodV0s(event,fESDEvent->GetPrimaryVertex()->GetZ(),CountESDTracks());
+AliGammaConversionKFVector* AliV0Reader::GetBGGoodV0s(Int_t /*event*/){
+  /*
+  if(fUseChargedTrackMultiplicityForBG == kTRUE){
+    return fBGEventHandler->GetBGGoodV0s(event,fESDEvent->GetPrimaryVertex()->GetZ(),CountESDTracks());
+  }
+  else{ // means we use #v0s as multiplicity
+    return fBGEventHandler->GetBGGoodV0s(event,fESDEvent->GetPrimaryVertex()->GetZ(),fNumberOfGoodV0s);
+  }
+  */
+  return NULL;
 }
 
 Int_t AliV0Reader::CountESDTracks(){