]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Added functionality to read cuts from string, in addition some added resolution plots...
authorkaamodt <kaamodt@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 17 May 2010 05:32:09 +0000 (05:32 +0000)
committerkaamodt <kaamodt@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 17 May 2010 05:32:09 +0000 (05:32 +0000)
PWG4/GammaConv/AliAnalysisTaskGammaConversion.cxx
PWG4/GammaConv/AliAnalysisTaskGammaConversion.h
PWG4/GammaConv/AliGammaConversionHistograms.cxx
PWG4/GammaConv/AliV0Reader.cxx
PWG4/GammaConv/AliV0Reader.h
PWG4/macros/ConfigGammaConversion.C

index 2eccf4e049365f73325b053bbfc17907a2991438..3837b17ce6b77f2c04007aae34cddf5a0c58238c 100644 (file)
@@ -301,9 +301,20 @@ void AliAnalysisTaskGammaConversion::UserExec(Option_t */*option*/)
 {
   // Execute analysis for current event
 
-  if(fDoMCTruth){
-    ConnectInputData("");
+
+  if(fV0Reader == NULL){
+    // Write warning here cuts and so on are default if this ever happens
   }
+
+  fV0Reader->SetInputAndMCEvent(InputEvent(), MCEvent());
+
+  fV0Reader->Initialize();
+  fDoMCTruth = fV0Reader->GetDoMCTruth();
+
+
+  //  if(fDoMCTruth){
+  //ConnectInputData("");
+    //}
   //Each event needs an empty branch
   //  fAODBranch->Clear();
   fAODBranch->Delete();
@@ -385,12 +396,9 @@ void AliAnalysisTaskGammaConversion::UserExec(Option_t */*option*/)
   // Process reconstructed gammas
   if(fDoNeutralMeson == kTRUE){
     ProcessGammasForNeutralMesonAnalysis();
-    ProcessConvPHOSGammasForNeutralMesonAnalysis();
-    if(fDoOmegaMeson == kTRUE){
-      ProcessGammasForOmegaMesonAnalysis();
-    }
-  }
 
+  }
+  
   if(fDoMCTruth == kTRUE){
     CheckV0Efficiency();
   }
@@ -407,7 +415,14 @@ void AliAnalysisTaskGammaConversion::UserExec(Option_t */*option*/)
   if(fCalculateBackground){
     CalculateBackground();
   }
-       
+
+   if(fDoNeutralMeson == kTRUE){
+//     ProcessConvPHOSGammasForNeutralMesonAnalysis();
+     if(fDoOmegaMeson == kTRUE){
+       ProcessGammasForOmegaMesonAnalysis();
+     }
+   }
+
   //Clear the data in the v0Reader
   fV0Reader->UpdateEventByEventData();
 
@@ -416,27 +431,31 @@ void AliAnalysisTaskGammaConversion::UserExec(Option_t */*option*/)
        
 }
 
-void AliAnalysisTaskGammaConversion::ConnectInputData(Option_t *option){
-  // see header file for documentation
+// void AliAnalysisTaskGammaConversion::ConnectInputData(Option_t *option){
+//   // see header file for documentation
+//   //  printf("   ConnectInputData %s\n", GetName());
 
-  AliAnalysisTaskSE::ConnectInputData(option);
+//   AliAnalysisTaskSE::ConnectInputData(option);
 
-  if(fV0Reader == NULL){
-    // Write warning here cuts and so on are default if this ever happens
-  }
-  fV0Reader->Initialize();
-  fDoMCTruth = fV0Reader->GetDoMCTruth();
-}
+//   if(fV0Reader == NULL){
+//     // Write warning here cuts and so on are default if this ever happens
+//   }
+//   fV0Reader->Initialize();
+//   fDoMCTruth = fV0Reader->GetDoMCTruth();
+// }
 
 
 
 void AliAnalysisTaskGammaConversion::ProcessMCData(){
   // see header file for documentation
-       
+  //InputEvent(), MCEvent());
+  /* TestAnaMarin
   fStack = fV0Reader->GetMCStack();
   fMCTruth = fV0Reader->GetMCTruth();  // for CF
   fGCMCEvent = fV0Reader->GetMCEvent();  // for CF
-       
+  */
+  fStack= MCEvent()->Stack();
+  fGCMCEvent=MCEvent();
        
   // for CF
   Double_t containerInput[3];
@@ -877,7 +896,13 @@ void AliAnalysisTaskGammaConversion::ProcessMCData(){
              fHistograms->FillHistogram("MC_Pi0_Pt_Eta_ConvGamma_withinAcceptance", particle->Pt(),particle->Eta());
              fHistograms->FillHistogram("MC_Pi0_Pt_Rapid_ConvGamma_withinAcceptance", particle->Pt(),rapidity);
              fHistograms->FillHistogram("MC_Pi0_ZR_ConvGamma_withinAcceptance", particle->Vz(),particle->R());
-             if(TMath::Abs(particle->Eta())<0.9)fHistograms->FillHistogram("MC_Pi0_Pt_ConvGamma_withinAcceptance_Fiducial", particle->Pt());
+             Double_t alfa=0.;
+             if((daughter0->Energy()+daughter1->Energy())!= 0.){
+               alfa= TMath::Abs((daughter0->Energy()-daughter1->Energy())/(daughter0->Energy()+daughter1->Energy()));
+             }
+             fHistograms->FillHistogram("MC_Pi0_alpha",alfa);
+              if(TMath::Abs(particle->Eta())<0.9)fHistograms->FillHistogram("MC_Pi0_Pt_ConvGamma_withinAcceptance_Fiducial", particle->Pt());
+
            }
          }
        }
@@ -1142,6 +1167,14 @@ void AliAnalysisTaskGammaConversion::ProcessV0s(){
     fHistograms->FillHistogram("ESD_ConvGamma_E_dEdxP",fV0Reader->GetNegativeTrackP(),fV0Reader->GetNegativeTrackTPCdEdx());
     fHistograms->FillHistogram("ESD_ConvGamma_P_dEdxP",fV0Reader->GetPositiveTrackP(),fV0Reader->GetPositiveTrackTPCdEdx());
     
+    Double_t armenterosQtAlfa[2];
+    fV0Reader->GetArmenterosQtAlfa(fV0Reader-> GetNegativeKFParticle(), 
+                                  fV0Reader-> GetPositiveKFParticle(), 
+                                  fV0Reader->GetMotherCandidateKFCombination(),
+                                  armenterosQtAlfa);
+   
+    fHistograms->FillHistogram("ESD_ConvGamma_alfa_qt",armenterosQtAlfa[1],armenterosQtAlfa[0]);
 
     // begin mapping
     Int_t rBin    = fHistograms->GetRBin(fV0Reader->GetXYRadius());
@@ -1285,7 +1318,7 @@ void AliAnalysisTaskGammaConversion::ProcessV0s(){
        fHistograms->FillHistogram("ESD_TrueConvGamma_MC_Pt_Eta", fV0Reader->GetMotherMCParticle()->Pt(),fV0Reader->GetMotherMCParticle()->Eta());
        fHistograms->FillHistogram("ESD_TrueConversion_MC_ZR", negativeMC->Vz(),negativeMC->R());
        fHistograms->FillHistogram("ESD_TrueConversion_MC_XY", negativeMC->Vx(),negativeMC->Vy());
-                               
+       
        //resolution
        Double_t mcpt   = fV0Reader->GetMotherMCParticle()->Pt();
        Double_t esdpt  = fV0Reader->GetMotherCandidatePt();
@@ -1339,7 +1372,6 @@ void AliAnalysisTaskGammaConversion::ProcessV0s(){
   fHistograms->FillHistogram("ESD_NumberOfContributorsVtx", fV0Reader->GetNumberOfContributorsVtx());
 
   fV0Reader->ResetV0IndexNumber();
-
 }
 
 void AliAnalysisTaskGammaConversion::FillAODWithConversionGammas(){
@@ -1381,24 +1413,82 @@ void AliAnalysisTaskGammaConversion::FillAODWithConversionGammas(){
 void AliAnalysisTaskGammaConversion::ProcessGammasForOmegaMesonAnalysis(){
   // omega meson analysis pi0+gamma decay
   for(Int_t firstPi0Index=0;firstPi0Index<fKFReconstructedPi0sTClone->GetEntriesFast();firstPi0Index++){
+    AliKFParticle * omegaCandidatePi0Daughter = (AliKFParticle *)fKFReconstructedPi0sTClone->At(firstPi0Index);
     for(Int_t firstGammaIndex=0;firstGammaIndex<fKFReconstructedGammasTClone->GetEntriesFast();firstGammaIndex++){
-      AliKFParticle * omegaCandidatePi0Daughter = (AliKFParticle *)fKFReconstructedPi0sTClone->At(firstPi0Index);
+
       AliKFParticle * omegaCandidateGammaDaughter = (AliKFParticle *)fKFReconstructedGammasTClone->At(firstGammaIndex);
       if(fGammav1[firstPi0Index]==firstGammaIndex || fGammav2[firstPi0Index]==firstGammaIndex){
         continue;
       }
 
-      AliKFParticle * omegaCandidate = new AliKFParticle(*omegaCandidatePi0Daughter,*omegaCandidateGammaDaughter);
+      AliKFParticle omegaCandidate(*omegaCandidatePi0Daughter,*omegaCandidateGammaDaughter);
       Double_t massOmegaCandidate = 0.;
       Double_t widthOmegaCandidate = 0.;
 
-      omegaCandidate->GetMass(massOmegaCandidate,widthOmegaCandidate);
+      omegaCandidate.GetMass(massOmegaCandidate,widthOmegaCandidate);
 
-      fHistograms->FillHistogram("ESD_Omega_InvMass_vs_Pt",massOmegaCandidate ,omegaCandidate->GetPt());
+      fHistograms->FillHistogram("ESD_Omega_InvMass_vs_Pt",massOmegaCandidate ,omegaCandidate.GetPt());
       fHistograms->FillHistogram("ESD_Omega_InvMass",massOmegaCandidate);
+      //delete omegaCandidate;
+
+    }// end of omega reconstruction in pi0+gamma channel
+
+    if(fDoJet == kTRUE){
+      AliKFParticle* negPiKF=NULL;
+      AliKFParticle* posPiKF=NULL;
+      
+      // look at the pi+pi+pi0 channel 
+      for(Int_t iCh=0;iCh<fChargedParticles->GetEntriesFast();iCh++){
+       AliESDtrack* posTrack = (AliESDtrack*)(fChargedParticles->At(iCh));
+       if (posTrack->GetSign()<0) continue;
+       if (posPiKF) delete posPiKF; posPiKF=NULL;
+       posPiKF = new AliKFParticle( *(posTrack) ,211);
+       
+       for(Int_t jCh=0;jCh<fChargedParticles->GetEntriesFast();jCh++){
+         AliESDtrack* negTrack = (AliESDtrack*)(fChargedParticles->At(jCh));
+         if( negTrack->GetSign()>0) continue;
+         if (negPiKF) delete negPiKF; negPiKF=NULL;
+         negPiKF = new AliKFParticle( *(negTrack) ,-211);
+         AliKFParticle omegaCandidatePipPinPi0(*omegaCandidatePi0Daughter,*posPiKF,*negPiKF);
+         Double_t massOmegaCandidatePipPinPi0 = 0.;
+         Double_t widthOmegaCandidatePipPinPi0 = 0.;
+         
+         omegaCandidatePipPinPi0.GetMass(massOmegaCandidatePipPinPi0,widthOmegaCandidatePipPinPi0);
+         
+         fHistograms->FillHistogram("ESD_OmegaPipPinPi0_InvMass_vs_Pt",massOmegaCandidatePipPinPi0 ,omegaCandidatePipPinPi0.GetPt());
+         fHistograms->FillHistogram("ESD_OmegaPipPinPi0_InvMass",massOmegaCandidatePipPinPi0);
+
+         //  delete omegaCandidatePipPinPi0;
+       }
+      }
+    } // checking ig gammajet because in that case the chargedparticle list is created
+
+
 
-     }
   }
+
+  if(fCalculateBackground){
+    // Background calculation for the omega
+    for(Int_t nEventsInBG=0;nEventsInBG <fV0Reader->GetNBGEvents();nEventsInBG++){
+      AliGammaConversionKFVector * previousEventV0s = fV0Reader->GetBGGoodV0s(nEventsInBG);
+      for(UInt_t iPrevious=0;iPrevious<previousEventV0s->size();iPrevious++){
+       AliKFParticle previousGoodV0 = (AliKFParticle)(*(previousEventV0s->at(iPrevious)));
+       for(Int_t firstPi0Index=0;firstPi0Index<fKFReconstructedPi0sTClone->GetEntriesFast();firstPi0Index++){
+         AliKFParticle * omegaCandidatePi0Daughter = (AliKFParticle *)fKFReconstructedPi0sTClone->At(firstPi0Index);
+         AliKFParticle * omegaBckCandidate = new AliKFParticle(*omegaCandidatePi0Daughter,previousGoodV0);
+         Double_t massOmegaBckCandidate = 0.;
+         Double_t widthOmegaBckCandidate = 0.;
+         
+         omegaBckCandidate->GetMass(massOmegaBckCandidate,widthOmegaBckCandidate);
+         fHistograms->FillHistogram("ESD_Omega_Bck_InvMass_vs_Pt",massOmegaBckCandidate ,omegaBckCandidate->GetPt());
+         fHistograms->FillHistogram("ESD_Omega_Bck_InvMass",massOmegaBckCandidate);
+
+         delete omegaBckCandidate;
+       }
+      }
+    }
+  } // end of checking if background calculation is available
 }
 
 void AliAnalysisTaskGammaConversion::ProcessGammasForNeutralMesonAnalysis(){
@@ -1449,6 +1539,11 @@ void AliAnalysisTaskGammaConversion::ProcessGammasForNeutralMesonAnalysis(){
          else{
            rapidity = 0.5*(TMath::Log((twoGammaCandidate->GetE() +twoGammaCandidate->GetPz()) / (twoGammaCandidate->GetE()-twoGammaCandidate->GetPz())));
          }
+         Double_t alfa=0.0;
+         if( (twoGammaDecayCandidateDaughter0->GetE()+twoGammaDecayCandidateDaughter1->GetE()) != 0){
+           alfa=TMath::Abs((twoGammaDecayCandidateDaughter0->GetE()-twoGammaDecayCandidateDaughter1->GetE())
+             /(twoGammaDecayCandidateDaughter0->GetE()+twoGammaDecayCandidateDaughter1->GetE()));
+         }
                                        
          if(openingAngleTwoGammaCandidate < fMinOpeningAngleGhostCut){
            delete twoGammaCandidate;
@@ -1462,6 +1557,7 @@ void AliAnalysisTaskGammaConversion::ProcessGammasForNeutralMesonAnalysis(){
          fHistograms->FillHistogram("ESD_Mother_Rapid", rapidity);                                     
          fHistograms->FillHistogram("ESD_Mother_Phi", spaceVectorTwoGammaCandidate.Phi());
          fHistograms->FillHistogram("ESD_Mother_Mass", massTwoGammaCandidate);
+         fHistograms->FillHistogram("ESD_Mother_alfa", alfa);
          fHistograms->FillHistogram("ESD_Mother_R", spaceVectorTwoGammaCandidate.Pt());    // Pt in Space == R!!!
          fHistograms->FillHistogram("ESD_Mother_ZR", twoGammaCandidate->GetZ(), spaceVectorTwoGammaCandidate.Pt());
          fHistograms->FillHistogram("ESD_Mother_XY", twoGammaCandidate->GetX(), twoGammaCandidate->GetY());
@@ -1583,6 +1679,7 @@ void AliAnalysisTaskGammaConversion::ProcessGammasForNeutralMesonAnalysis(){
 }
 
 void AliAnalysisTaskGammaConversion::ProcessConvPHOSGammasForNeutralMesonAnalysis(){
+/*
   // see header file for documentation
   // Analyse Pi0 with one photon from Phos and 1 photon from conversions
        
@@ -1665,27 +1762,26 @@ void AliAnalysisTaskGammaConversion::ProcessConvPHOSGammasForNeutralMesonAnalysi
       }
 
     }
-
-    for(Int_t nEventsInBG=0;nEventsInBG <fV0Reader->GetNBGEvents();nEventsInBG++){
-      AliGammaConversionKFVector * previousEventV0s = fV0Reader->GetBGGoodV0s(nEventsInBG);
-      for(UInt_t iPrevious=0;iPrevious<previousEventV0s->size();iPrevious++){
-       AliKFParticle previousGoodV0 = (AliKFParticle)(*(previousEventV0s->at(iPrevious)));
-       gammaGammaConvBck.SetXYZM(previousGoodV0.Px(),
-                                 previousGoodV0.Py(),
-                                 previousGoodV0.Pz(),0.);
-       pi0GammaConvEMCALBck=gammaGammaConvBck+gammaEMCAL;
-       fHistograms->FillHistogram("ESD_Mother_InvMass_GammaConvEMCAL_Bck",pi0GammaConvEMCALBck.M());
-       fHistograms->FillHistogram("ESD_Mother_InvMass_vs_Pt_GammaConvEMCAL_Bck",pi0GammaConvEMCALBck.M(),
-                                  pi0GammaConvEMCALBck.Pt());
+    if(fCalculateBackground){
+      for(Int_t nEventsInBG=0;nEventsInBG <fV0Reader->GetNBGEvents();nEventsInBG++){
+       AliGammaConversionKFVector * previousEventV0s = fV0Reader->GetBGGoodV0s(nEventsInBG);
+       for(UInt_t iPrevious=0;iPrevious<previousEventV0s->size();iPrevious++){
+         AliKFParticle previousGoodV0 = (AliKFParticle)(*(previousEventV0s->at(iPrevious)));
+         gammaGammaConvBck.SetXYZM(previousGoodV0.Px(),
+                                   previousGoodV0.Py(),
+                                   previousGoodV0.Pz(),0.);
+         pi0GammaConvEMCALBck=gammaGammaConvBck+gammaEMCAL;
+         fHistograms->FillHistogram("ESD_Mother_InvMass_GammaConvEMCAL_Bck",pi0GammaConvEMCALBck.M());
+         fHistograms->FillHistogram("ESD_Mother_InvMass_vs_Pt_GammaConvEMCAL_Bck",pi0GammaConvEMCALBck.M(),
+                                    pi0GammaConvEMCALBck.Pt());
+       }
       }
-    }
-
-    //  Now the LorentVector pPHOS is obtained and can be paired with the converted proton
-  }
+      
+      //  Now the LorentVector pEMCAL is obtained and can be paired with the converted proton
+    } // end of checking if background photons are available
+   }
   //==== End of the PHOS cluster selection ============
-
-
-
+*/
 }
 
 void AliAnalysisTaskGammaConversion::CalculateBackground(){
index e57c0df5898b941b52769d0cb07a572014c51428..7ddcec96e1acb3a12cac074bd146976804501229 100644 (file)
@@ -45,7 +45,7 @@ class AliAnalysisTaskGammaConversion : public AliAnalysisTaskSE
   virtual void LocalInit() {Init();}
   virtual void UserExec(Option_t *option);
   virtual void Terminate(Option_t *option);
-  virtual void ConnectInputData(Option_t * option);
+  //virtual void ConnectInputData(Option_t * option);
                
   void ProcessMCData();
   void ProcessV0sNoCut();
@@ -145,11 +145,13 @@ class AliAnalysisTaskGammaConversion : public AliAnalysisTaskSE
     kStepR = 10,
     kStepLine = 11,
     kStepZ = 12,
-    kStepNDF = 13,
-    kStepChi2 = 14,
-    kStepEta = 15,
-    kStepPt = 16,
-    kStepTrueGamma = 17
+    kStepMinClsTPC = 13,
+    kStepSinglePt = 14,
+    kStepNDF = 15,
+    kStepChi2 = 16,
+    kStepEta = 17,
+    kStepPt = 18,
+    kStepTrueGamma = 19
   };
   
   AliV0Reader* fV0Reader; // The V0 reader object 
index a598b21f7c585b05ad91ee429265580b8e21c23e..59973a444be8cf30cf03b421e0b2fdaf2825f1a9 100644 (file)
@@ -365,7 +365,12 @@ void AliGammaConversionHistograms::InitializeMappingValues(Int_t nPhiIndex, Int_
   // Initializing the valuse for the mapping
        
   fNPhiIndex = nPhiIndex;
-  fNRIndex   = nRIndex;
+  if(nRIndex<=14){
+    fNRIndex   = nRIndex;
+  }else{
+    fNRIndex=14;
+  }
+
   fNZIndex = 13;
 
   //  fRBinLimits= new Double_t[8];   Kenneth: moved from pointer to fixed array
index 95fc228b0d4f76a839a5fa63dea3e5813adde815..5126609ab6f05129d2a9efe3ddbea19e57c03e5e 100644 (file)
@@ -50,10 +50,10 @@ ClassImp(AliV0Reader)
 AliV0Reader::AliV0Reader() :
   TObject(),
   fMCStack(NULL),
-  fMCTruth(NULL),
+  // fMCTruth(NULL),
   fMCEvent(NULL),    // for CF
   fChain(NULL),
-  fESDHandler(NULL),
+  // fESDHandler(NULL),
   fESDEvent(NULL),
   fCFManager(NULL),
   fESDpid(NULL),
@@ -84,7 +84,9 @@ AliV0Reader::AliV0Reader() :
   fMaxR(10000),// 100 meter(outside of ALICE)
   fEtaCut(0.),
   fPtCut(0.),
+  fSinglePtCut(0.),
   fMaxZ(0.),
+  fMinClsTPC(0.),
   fLineCutZRSlope(0.),
   fLineCutZValue(0.),
   fChi2CutConversion(0.),
@@ -120,10 +122,10 @@ AliV0Reader::AliV0Reader() :
 AliV0Reader::AliV0Reader(const AliV0Reader & original) :
   TObject(original),
   fMCStack(original.fMCStack),
-  fMCTruth(original.fMCTruth),
+  // fMCTruth(original.fMCTruth),
   fMCEvent(original.fMCEvent),  // for CF
   fChain(original.fChain),
-  fESDHandler(original.fESDHandler),
+  //  fESDHandler(original.fESDHandler),
   fESDEvent(original.fESDEvent),
   fCFManager(original.fCFManager),
   fESDpid(original.fESDpid),
@@ -154,7 +156,9 @@ AliV0Reader::AliV0Reader(const AliV0Reader & original) :
   fMaxR(original.fMaxR),
   fEtaCut(original.fEtaCut),
   fPtCut(original.fPtCut),
+  fSinglePtCut(original.fSinglePtCut),
   fMaxZ(original.fMaxZ),
+  fMinClsTPC(original.fMinClsTPC),
   fLineCutZRSlope(original.fLineCutZRSlope),
   fLineCutZValue(original.fLineCutZValue),
   fChi2CutConversion(original.fChi2CutConversion),
@@ -199,32 +203,58 @@ AliV0Reader::~AliV0Reader()
   }
 }
 
+//____________________________________________________________________________
+void AliV0Reader::SetInputAndMCEvent(AliVEvent* esd, AliMCEvent* mc) {
+  // Connect the data pointers
+
+  SetInputEvent(esd);
+  SetMC(mc);
+
+}
+
+
 void AliV0Reader::Initialize(){
   //see header file for documentation
 
   fUpdateV0AlreadyCalled = kFALSE;     
+
+  /*
   // Get the input handler from the manager
   fESDHandler = (AliESDInputHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());
   if(fESDHandler == NULL){
     //print warning here
   }
-       
+
   // Get pointer to esd event from input handler
   fESDEvent = fESDHandler->GetEvent();
   if(fESDEvent == NULL){
     //print warning here
   }
-       
+
   //Get pointer to MCTruth
   fMCTruth = (AliMCEventHandler*)((AliAnalysisManager::GetAnalysisManager())->GetMCtruthEventHandler());
-  if(fMCTruth == NULL){
+  */
+
+
+
+  //  fMCTruth = mcH->MCEvent();
+  //  fMC = mcH->MCEvent();
+  // stack = fMC->Stack();
+
+
+  //if(fMCTruth == NULL){
     //print warning here
-    fDoMC = kFALSE;
+  // fDoMC = kFALSE;
+  //}
+
+  if(fMCEvent == NULL){
+   fDoMC = kFALSE;
   }
-       
+
   //Get pointer to the mc stack
-  if(fMCTruth){
-    fMCStack = fMCTruth->MCEvent()->Stack();
+  //  if(fMCTruth){
+  if(fMCEvent){
+    fMCStack = fMCEvent->Stack();
     if(fMCStack == NULL){
       //print warning here
     }
@@ -247,7 +277,7 @@ void AliV0Reader::Initialize(){
   // for CF
   //Get pointer to the mc event
   if(fDoCF && fDoMC){
-    fMCEvent = fMCTruth->MCEvent();
+    //fMCEvent = fMCTruth->MCEvent();
     if(fMCEvent == NULL){
       //print warning here
       fDoCF = kFALSE;
@@ -281,8 +311,8 @@ void AliV0Reader::Initialize(){
       multiplicityBinLimitsArray[2] = 16.5;
       multiplicityBinLimitsArray[3] = 27.5;
       multiplicityBinLimitsArray[4] = 41.5;
-            
-      fBGEventHandler = new AliGammaConversionBGHandler(8,4,10);
+          
+      fBGEventHandler = new AliGammaConversionBGHandler(8,5,10);
       
       /*
       // ---------------------------------
@@ -382,7 +412,16 @@ Bool_t AliV0Reader::NextV0(){
     if(fHistograms != NULL){
       fHistograms->FillHistogram("ESD_AllV0sCurrentFinder_InvMass",GetMotherCandidateMass());
     }
-    
+    Double_t armenterosQtAlfa[2];
+    GetArmenterosQtAlfa(GetNegativeKFParticle(), 
+                       GetPositiveKFParticle(), 
+                       GetMotherCandidateKFCombination(),
+                       armenterosQtAlfa);
+   
+    fHistograms->FillHistogram("ESD_AllV0sCurrentFinder_alfa_qt",armenterosQtAlfa[1],armenterosQtAlfa[0]);
+   
     if(fCurrentNegativeESDTrack->GetSign() == fCurrentPositiveESDTrack->GetSign()){             // avoid like sign
       //  iResult=kFALSE;
       if(fHistograms != NULL ){
@@ -557,9 +596,33 @@ Bool_t AliV0Reader::NextV0(){
        continue;
        }
     */
+    if(fCurrentNegativeESDTrack->GetNcls(1) < fMinClsTPC ||  fCurrentPositiveESDTrack->GetNcls(1) < fMinClsTPC ){
+      if(fHistograms != NULL){
+       fHistograms->FillHistogram("ESD_CutMinNClsTPC_InvMass",GetMotherCandidateMass());
+      }
+      fCurrentV0IndexNumber++;
+      continue;
+    }
+    if(fDoCF){
+      fCFManager->GetParticleContainer()->Fill(containerInput,kStepMinClsTPC);         // for CF       
+    }
 
                
     if(fUseKFParticle){
+
+
+      if( fCurrentNegativeKFParticle->GetPt()< fSinglePtCut ||  fCurrentPositiveKFParticle->GetPt()< fSinglePtCut){
+       if(fHistograms != NULL){
+         fHistograms->FillHistogram("ESD_CutSinglePt_InvMass",GetMotherCandidateMass());
+       }
+       fCurrentV0IndexNumber++;
+       continue;
+      }
+      if(fDoCF){
+       fCFManager->GetParticleContainer()->Fill(containerInput,kStepSinglePt);         // for CF       
+      }
+
+
       if(fCurrentMotherKFCandidate->GetNDF()<=0){
        if(fHistograms != NULL){
          fHistograms->FillHistogram("ESD_CutNDF_InvMass",GetMotherCandidateMass());
@@ -1228,3 +1291,29 @@ Bool_t AliV0Reader::CheckIfPi0IsMother(Int_t label){
   }
   return iResult;
 }
+
+
+Bool_t AliV0Reader::GetArmenterosQtAlfa(AliKFParticle* positiveKFParticle, AliKFParticle * negativeKFParticle, AliKFParticle * gammaKFCandidate, Double_t armenterosQtAlfa[2] ){
+  //see header file for documentation
+
+  TVector3 momentumVectorPositiveKF(positiveKFParticle->GetPx(),positiveKFParticle->GetPy(),positiveKFParticle->GetPz());
+  TVector3 momentumVectorNegativeKF(negativeKFParticle->GetPx(),negativeKFParticle->GetPy(),negativeKFParticle->GetPz());
+  TVector3 vecV0(gammaKFCandidate->GetPx(),gammaKFCandidate->GetPy(),gammaKFCandidate->GetPz());
+
+  Float_t thetaV0pos=TMath::ACos(( momentumVectorPositiveKF* vecV0)/(momentumVectorPositiveKF.Mag() * vecV0.Mag()));
+  Float_t thetaV0neg=TMath::ACos(( momentumVectorNegativeKF* vecV0)/(momentumVectorNegativeKF.Mag() * vecV0.Mag()));
+  
+  Float_t alfa =((momentumVectorPositiveKF.Mag())*TMath::Cos(thetaV0pos)-(momentumVectorNegativeKF.Mag())*TMath::Cos(thetaV0neg))/
+    ((momentumVectorPositiveKF.Mag())*TMath::Cos(thetaV0pos)+(momentumVectorNegativeKF.Mag())*TMath::Cos(thetaV0neg)) ;
+  
+
+  Float_t qt = momentumVectorPositiveKF.Mag()*TMath::Sin(thetaV0pos);
+      
+  armenterosQtAlfa[0]=qt;
+  armenterosQtAlfa[1]=alfa;
+
+  return 1;
+
+}
+
+
index b91c4c126273f1de9a43c1699d51e2f009d6b2de..210e1adf54d53b79d8051db10c3becb102abed85 100644 (file)
@@ -62,11 +62,13 @@ class AliV0Reader : public TObject {
     kStepR = 10,
     kStepLine = 11,
     kStepZ = 12,
-    kStepNDF = 13,
-    kStepChi2 = 14,
-    kStepEta = 15,
-    kStepPt = 16,
-    kStepTrueGamma = 17
+    kStepMinClsTPC = 13,
+    kStepSinglePt= 14,  
+    kStepNDF = 15,
+    kStepChi2 = 16,
+    kStepEta = 17,
+    kStepPt = 18,
+    kStepTrueGamma = 19
   };
        
   AliV0Reader();                                        //constructor
@@ -78,7 +80,12 @@ class AliV0Reader : public TObject {
    *Initialize the reader
    */
   void Initialize();
-       
+  void SetInputAndMCEvent(AliVEvent* esd, AliMCEvent* mc) ;
+
+
+  virtual void SetInputEvent(AliVEvent* const input)  {fESDEvent  = dynamic_cast<AliESDEvent*>(input);}
+  virtual void SetMC(AliMCEvent* const mc)            {fMCEvent = mc;}
+
        
   // for CF
   void SetCFManager(AliCFManager * const io){fCFManager = io;};
@@ -190,7 +197,7 @@ class AliV0Reader : public TObject {
   /*
    * Setup  AliMCEventHandler
    */                  
-  AliMCEventHandler* GetMCTruth() const{return fMCTruth;}      // for CF
+  //  AliMCEventHandler* GetMCTruth() const{return fMCTruth;}  // for CF
        
        
   /*
@@ -443,6 +450,12 @@ class AliV0Reader : public TObject {
   Double_t GetMaxZCut() const{return fMaxZ;}
        
        
+  /*
+   * Gets the MinClsTPC value.
+   */
+  Double_t GetMinClsTPCCut() const{return fMinClsTPC;}
+       
+
   /*
    * Gets the line cut values.
    */
@@ -480,12 +493,21 @@ class AliV0Reader : public TObject {
    */
   void SetPtCut(Double_t ptCut){fPtCut=ptCut;}
        
+  /*
+   * Sets the PtCut value.
+   */
+  void SetSinglePtCut(Double_t singleptCut){fSinglePtCut=singleptCut;}
+       
     
   /*
    * Sets the MaxZCut value.
    */
   void SetMaxZCut(Double_t maxZ){fMaxZ=maxZ;}
        
+ /*
+   * Sets the MinClsTPC value.
+   */
+  void SetMinClsTPCCut(Double_t minClsTPC){fMinClsTPC=minClsTPC;}
        
   /*
    * Sets the LineCut values.
@@ -614,6 +636,8 @@ class AliV0Reader : public TObject {
        
   Double_t GetConvPosZ(AliESDtrack* ptrack,AliESDtrack* ntrack, Double_t b);
 
+  Bool_t GetArmenterosQtAlfa(AliKFParticle * posKFparticle,AliKFParticle * negKFparticle,AliKFParticle * gamKFparticle,Double_t armenterosQtAlfa[2]);
+
   void SetDoCF(Bool_t flag){fDoCF = flag;}
 
   Bool_t CheckV0FinderStatus(Int_t index);
@@ -640,11 +664,11 @@ class AliV0Reader : public TObject {
 
  private:
   AliStack * fMCStack;           // pointer to MonteCarlo particle stack 
-  AliMCEventHandler* fMCTruth;   // for CF    pointer to the MC object
+  //  AliMCEventHandler* fMCTruth;   // for CF    pointer to the MC object
   AliMCEvent *fMCEvent;                        //  for CF      pointer to MC event
   TChain * fChain;               // pointer to the TChain
        
-  AliESDInputHandler* fESDHandler;      //! pointer to esd object
+  //  AliESDInputHandler* fESDHandler;      //! pointer to esd object
   AliESDEvent *fESDEvent;               //! pointer to esd object
        
        
@@ -692,7 +716,9 @@ class AliV0Reader : public TObject {
   Double_t fMaxR; //r cut
   Double_t fEtaCut; //eta cut
   Double_t fPtCut; // pt cut
-  Double_t fMaxZ; //z cut  
+  Double_t fSinglePtCut; // pt cut for electron/positron
+  Double_t fMaxZ; //z cut
+  Double_t fMinClsTPC;
   Double_t fLineCutZRSlope; //linecut
   Double_t fLineCutZValue; //linecut
   Double_t fChi2CutConversion; //chi2cut
index 380cd9dc10659f96c0f1ab5de34e5b1fa884cfc3..fd23b3bf1543b57d418fad4dad4ed0195de576a9 100644 (file)
@@ -30,17 +30,22 @@ Bool_t kGCrunChic         = kFALSE;
 Bool_t kGCrunCF           = kFALSE;
 Bool_t kGCcalculateBackground = kTRUE;
 Bool_t kGCdoNeutralMesonV0MCCheck =kFALSE;
+Bool_t kGCrunOmegaMeson = kFALSE;
 
 /** ---------------------------------- define cuts here ------------------------------------*/
 
+TString kGCAnalysisCutSelectionId="9010111000"; // do not cheange here, use -set-cut-selection in argument instead
+
 Int_t kGCpidOfNegativeTrack=11;
 Int_t kGCpidOfPositiveTrack=-11;
 
 Double_t kGCmaxRCut   = 180.;
-Double_t kGCetaCut    = 1.2;
+Double_t kGCetaCut    = 0.9;
 Double_t kGCptCut     = 0.02;
+Double_t kGCsingleptCut = 0.02;
 Double_t kGCmaxZCut     = 240.;
-Double_t kGCchi2CutConversion   = 50.;
+Double_t kGCminClsTPCCut= 0.;
+Double_t kGCchi2CutConversion   = 30.;
 Double_t kGCchi2CutMeson   = 50.;
 
 Double_t kGCLineCutZRSlope = tan(2*atan(exp(-kGCetaCut)));
@@ -162,8 +167,12 @@ Bool_t kGCplotMCPi0Eta                                     = kTRUE;
 Bool_t kGCplotMCPi0Rapid                                   = kTRUE;
 Bool_t kGCplotMCPi0Phi                                     = kTRUE;
 Bool_t kGCplotMCPi0Pt                                      = kTRUE;
+Bool_t kGCplotMCPi0PtFiducial                              = kTRUE;
+Bool_t kGCplotMCPi0PtWithinAcceptanceFiducial              = kTRUE;
+Bool_t kGCplotMCPi0PtConvGammaWithinAcceptanceFiducial     = kTRUE;
 Bool_t kGCplotMCPi0Energy                                  = kTRUE;
 Bool_t kGCplotMCPi0Mass                                    = kTRUE;
+Bool_t kGCplotMCPi0Alpha                                   = kTRUE;
 Bool_t kGCplotMCPi0OpeningAngle                            = kTRUE;
 Bool_t kGCplotMCPi0R                                       = kTRUE;
 Bool_t kGCplotMCPi0ZR                                      = kTRUE;
@@ -218,6 +227,7 @@ Bool_t kGCplotESDConvGammaEAsymmetryP         = kTRUE;
 Bool_t kGCplotESDConvGammaPAsymmetryP         = kTRUE;
 Bool_t kGCplotESDConvGammaEdEdxP         = kTRUE;
 Bool_t kGCplotESDConvGammaPdEdxP         = kTRUE;
+Bool_t kGCplotESDConvGammaQtAlfa         = kTRUE;
 
 
 Bool_t kGCplotESDEEnergy = kTRUE;
@@ -350,15 +360,13 @@ Bool_t kGCplotResolutionESDPt = kTRUE;
 Bool_t kGCplotResolutionESDR  = kTRUE;
 Bool_t kGCplotResolutionESDZ  = kTRUE;
 
+Bool_t kGCplotResolutionPtdPt = kTRUE;
+
 Bool_t kGCplotESDNumberOfV0s          = kTRUE;
 Bool_t kGCplotESDNumberOfSurvivingV0s = kTRUE;
 Bool_t kGCplotESDNumberOfContributorsVtx = kTRUE;
 Bool_t kGCplotESDNumberOfGoodESDTracks = kTRUE;
 
-Bool_t kGCplotMCPi0PtFiducial                            = kTRUE;
-Bool_t kGCplotMCPi0PtWithinAcceptanceFiducial            = kTRUE;
-Bool_t kGCplotMCPi0PtConvGammaWithinAcceptanceFiducial   = kTRUE; 
-
 //  debug histograms
 Bool_t kGCplotESDCutGetOnFly      = kTRUE;
 Bool_t kGCplotESDCutNContributors = kTRUE;
@@ -371,9 +379,12 @@ Bool_t kGCplotESDCutdedxSigmaPionLine=kTRUE;
 Bool_t kGCplotESDCutR             = kTRUE;
 Bool_t kGCplotESDCutLine          = kTRUE;
 Bool_t kGCplotESDCutZ             = kTRUE;
+Bool_t kGCplotESDCutMinClsTPC     = kTRUE;
 Bool_t kGCplotESDGoodV0s          = kTRUE;
 Bool_t kGCplotESDAllV0s           = kTRUE;
 Bool_t kGCplotESDAllV0sCurrentFinder = kTRUE;
+Bool_t kGCplotESDAllV0sCurrentFinderQtAlfa = kTRUE;
+
 Bool_t kGCplotESDCutNDF           = kTRUE;
 Bool_t kGCplotESDCutChi2          = kTRUE;
 Bool_t kGCplotESDCutEta           = kTRUE;
@@ -383,6 +394,7 @@ Bool_t kGCplotESDTrueConvGammaTrackLengthVSInvMass =kTRUE;
 
 Bool_t kGCplotPi0Spectra = kTRUE;
 Bool_t kGCplotEtaSpectra = kTRUE;
+Bool_t kGCplotOmegaSpectra = kTRUE;
 
 /////////////Chi_c Analysis//////////////////////////
 Bool_t kGCplotStatsElectrons                                  = kTRUE;
@@ -487,6 +499,13 @@ Int_t kGCnYBinsdEdx = 400;
 Double_t kGCfirstYBindEdx = 0.;
 Double_t kGClastYBindEdx = 400.;
 
+//Qt-plots
+Int_t kGCnYBinsQt = 500;
+Double_t kGCfirstYBinQt = 0.;
+Double_t kGClastYBinQt = 0.5;
+
+
+
 //Asymmetry-plots
 Int_t kGCnYBinsAsymmetry = 200;
 Double_t kGCfirstYBinAsymmetry = 0.;
@@ -590,6 +609,9 @@ Double_t kGClastXBinGammaMass = 1.;
 Int_t kGCnXBinsPi0Mass = 1000;
 Double_t kGCfirstXBinPi0Mass = 0.;
 Double_t kGClastXBinPi0Mass = 1.;
+Double_t kGCfirstXBinPi0Alpha = -1.;
+Double_t kGClastXBinPi0Alpha = 1.;
+
 
 //EtaMass-plots
 Int_t kGCnXBinsEtaMass = 1000;
@@ -619,6 +641,9 @@ Int_t kGCnYBinsSpectra = 500;
 Double_t kGCfirstYBinSpectra = 0.;
 Double_t kGClastYBinSpectra = 50.;
 
+Double_t kGCfirstXBinAlpha = -1.;
+Double_t kGClastXBinAlpha = 1.;
+
 //track length plots
 Int_t kGCnXBinsTrackLength = 1000;
 Double_t kGCfirstXBinTrackLength = 0;
@@ -733,7 +758,7 @@ Bool_t kGCuseESDTrack   = kFALSE;
 Bool_t kGCdodEdxSigmaCut= kTRUE;
 /**------------------------------end Flag to apply NsigmadEdx cut ----------*/
 Double_t kGCPIDnSigmaAboveElectronLine=5;
-Double_t kGCPIDnSigmaBelowElectronLine=-5;
+Double_t kGCPIDnSigmaBelowElectronLine=-3;
 Double_t kGCPIDnSigmaAbovePionLine=0;
 Double_t kGCPIDMinPnSigmaAbovePionLine=1;
  
@@ -858,6 +883,11 @@ Bool_t scanArguments(TString arguments){
          cout<<"Appending to the output file: "<<kGCoutputFileAppendix<<endl;
        }
       }
+      else if(argument.CompareTo("-set-cut-selection") == 0){
+       if((bMissingParam=(++i>=pTokens->GetEntries()))) break;
+       kGCAnalysisCutSelectionId = ((TObjString*)pTokens->At(i))->GetString();
+       cout<<"The analysis cut selection is set to: "<<kGCAnalysisCutSelectionId.Data()<<endl;
+      }
     }
     delete pTokens;
   }
@@ -890,7 +920,8 @@ void SetVersionLibrary(){
 
 
 
-AliAnalysisTaskGammaConversion* ConfigGammaConversion(TString arguments,AliAnalysisDataContainer *cin_esd=NULL){
+AliAnalysisTaskGammaConversion* ConfigGammaConversion(TString arguments, AliAnalysisDataContainer *cin_esd=NULL){ 
+                                                     
        
   
   if(!scanArguments(arguments)){
@@ -958,7 +989,7 @@ AliAnalysisTaskGammaConversion* ConfigGammaConversion(TString arguments,AliAnaly
     UInt_t imass = 2;  
                
     //how many selection steps 
-    UInt_t nstep = 18;
+    UInt_t nstep = 20;
     const Int_t nvar = 3;
     const Int_t nbin0 = kGCnXBinsPt; 
     const Int_t nbin1 = kGCnXBinsEta;
@@ -1090,9 +1121,13 @@ AliAnalysisTaskGammaConversion* ConfigGammaConversion(TString arguments,AliAnaly
   }
   //TString fileOut = kGCoutputFileName + kGCoutputFileAppendix + ".root";
 
-  TString outputfile = AliAnalysisManager::GetCommonFileName();  
-  outputfile += ":PWG4_GammaConversion";
-       
+  
+  TString outputfile = AliAnalysisManager::GetCommonFileName();
+  cout<<"Analyis cut selection ID is: "<<kGCAnalysisCutSelectionId.Data()<<endl;
+  //  outputfile += Form(":PWG4_GammaConversion_%llu",(ULong_t)kGCAnalysisCutSelectionId);
+  outputfile += Form(":PWG4_GammaConversion_%s",kGCAnalysisCutSelectionId.Data());
+
+  cout<<"Ouput file::"<<  outputfile <<endl;
   AliAnalysisDataContainer *coutput2 = mgr->CreateContainer("histogramsAliGammaConversion", TList::Class(),AliAnalysisManager::kOutputContainer, outputfile);
   // for CF
   AliAnalysisDataContainer *coutput3 = mgr->CreateContainer("GammaConvccontainer0",AliCFContainer::Class(),AliAnalysisManager::kOutputContainer,outputfile);
@@ -1123,9 +1158,11 @@ AliAnalysisTaskGammaConversion* ConfigGammaConversion(TString arguments,AliAnaly
   v0Reader->SetMaxRCut(kGCmaxRCut);
   v0Reader->SetEtaCut(kGCetaCut);
   v0Reader->SetPtCut(kGCptCut);
+  v0Reader->SetSinglePtCut(kGCsingleptCut);
   v0Reader->SetLineCutZRSlope(kGCLineCutZRSlope);
   v0Reader->SetLineCutZValue(kGCLineCutZValue);        
   v0Reader->SetMaxZCut(kGCmaxZCut);    
+  v0Reader->SetMinClsTPCCut(kGCminClsTPCCut);  
   v0Reader->SetChi2CutConversion(kGCchi2CutConversion);
   v0Reader->SetChi2CutMeson(kGCchi2CutMeson);
   v0Reader->SetPIDProbability(kGCprobElectron);
@@ -1136,6 +1173,7 @@ AliAnalysisTaskGammaConversion* ConfigGammaConversion(TString arguments,AliAnaly
   v0Reader->SetUseImprovedVertex(kGCuseImprovedVertex);
   v0Reader->SetDoMCTruth(kGCdoMCTruth);
   v0Reader->SetUseOwnXYZCalculation(kGCdoOwnXYZCalculation);
+
   // for CF
   v0Reader->SetCFManager(man);
        
@@ -1147,8 +1185,18 @@ AliAnalysisTaskGammaConversion* ConfigGammaConversion(TString arguments,AliAnaly
   v0Reader->SetPIDMinPnSigmaAbovePionLine(kGCPIDMinPnSigmaAbovePionLine);
   v0Reader->SetOnFlyFlag(kGCUseOnFlyV0Finder);
   v0Reader->SetCalculateBackground(kGCcalculateBackground);
+
+  if(!SetAnalysisCutSelection(kGCAnalysisCutSelectionId)){
+    return 0;
+  }
+
   // Create the GammaConversionTask
-  AliAnalysisTaskGammaConversion *gammaconversion = new AliAnalysisTaskGammaConversion("GammaConversionTask");
+
+
+  AliAnalysisTaskGammaConversion *gammaconversion = 
+    new AliAnalysisTaskGammaConversion(Form("GammaConversionTask_%s",kGCAnalysisCutSelectionId.Data()));
+
+  cout<<"name of Task::"<< Form("GammaConversionTask_%s",kGCAnalysisCutSelectionId.Data())<< " "<<gammaconversion->GetName() <<endl;
   gammaconversion->SetDebugLevel(0);
        
   gammaconversion->SetWriteNtuple(kGCwriteNtuple);
@@ -1188,6 +1236,7 @@ AliAnalysisTaskGammaConversion* ConfigGammaConversion(TString arguments,AliAnaly
   gammaconversion->SetDoNeutralMesonV0MCCheck(kGCdoNeutralMesonV0MCCheck);
   gammaconversion->SetDoJet(kGCrunJet);
   gammaconversion->SetDoChic(kGCrunChic);
+  gammaconversion->SetDoOmegaMeson(kGCrunOmegaMeson);
 
   // for CF
   gammaconversion->SetCFManager(man);
@@ -1220,10 +1269,11 @@ AliAnalysisTaskGammaConversion* ConfigGammaConversion(TString arguments,AliAnaly
       physSelTask->GetPhysicsSelection()->AddBackgroundIdentification(new AliBackgroundSelection());
       gammaconversion->SelectCollisionCandidates();    
     */
+
     gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPhysicsSelection.C");
     AliPhysicsSelectionTask* physSelTask = AddTaskPhysicsSelection(kGCdoMCTruth,kTRUE);
     gammaconversion->SelectCollisionCandidates(); 
-       
+
     //    if(kGCrunOnTrain == kFALSE){
       TChain* chain= CreateESDChain(kGCdataList,kGCnumberOfFilesToAnalyze);
                        
@@ -1478,8 +1528,14 @@ void AddHistograms(AliGammaConversionHistograms *histograms){
     if(kGCplotMCPi0Rapid == kTRUE){ histograms->AddHistogram("MC_Pi0_Rapid" ,"" , kGCnXBinsRapid, kGCfirstXBinRapid, kGClastXBinRapid, "", "");}       
     if(kGCplotMCPi0Phi == kTRUE){ histograms->AddHistogram("MC_Pi0_Phi" ,"" , kGCnXBinsPhi, kGCfirstXBinPhi, kGClastXBinPhi, "", "");}
     if(kGCplotMCPi0Pt == kTRUE){ histograms->AddHistogram("MC_Pi0_Pt" ,"" , kGCnXBinsPt, kGCfirstXBinPt, kGClastXBinPt, "", "");}
+    if(kGCplotMCPi0PtFiducial == kTRUE){ histograms->AddHistogram("MC_Pi0_Pt_Fiducial" ,"" , kGCnXBinsPt, kGCfirstXBinPt, kGClastXBinPt, "", "");}
+    if(kGCplotMCPi0PtWithinAcceptanceFiducial == kTRUE){ histograms->AddHistogram("MC_Pi0_Pt_withinAcceptance_Fiducial" ,"" , kGCnXBinsPt,kGCfirstXBinPt, kGClastXBinPt, "", "");}
+    if(kGCplotMCPi0PtConvGammaWithinAcceptanceFiducial == kTRUE){ histograms->AddHistogram("MC_Pi0_Pt_ConvGamma_withinAcceptance_Fiducial","" , kGCnXBinsPt, kGCfirstXBinPt, kGClastXBinPt, "", "");}
+
     if(kGCplotMCPi0Energy == kTRUE){ histograms->AddHistogram("MC_Pi0_Energy" ,"" , kGCnXBinsEnergy, kGCfirstXBinEnergy, kGClastXBinEnergy, "", "");}
     if(kGCplotMCPi0Mass == kTRUE){ histograms->AddHistogram("MC_Pi0_Mass" ,"" , kGCnXBinsPi0Mass, kGCfirstXBinPi0Mass, kGClastXBinPi0Mass, "", "");}
+    if(kGCplotMCPi0Alpha == kTRUE){ histograms->AddHistogram("MC_Pi0_alpha" ,"" , kGCnXBinsPi0Mass, kGCfirstXBinPi0Alpha, kGClastXBinPi0Alpha, "", "");}
+
     if(kGCplotMCPi0OpeningAngle == kTRUE){ histograms->AddHistogram("MC_Pi0_GammaDaughter_OpeningAngle" ,"" , kGCnXBinsOpeningAngle, kGCfirstXBinOpeningAngle, kGClastXBinOpeningAngle, "", "");}
     if(kGCplotMCPi0R == kTRUE){ histograms->AddHistogram("MC_Pi0_R" ,"" , kGCnXBinsR, kGCfirstXBinR, kGClastXBinR, "", "");}
     if(kGCplotMCPi0ZR == kTRUE){ histograms->AddHistogram("MC_Pi0_ZR" ,"" , kGCnXBinsZR, kGCfirstXBinZR, kGClastXBinZR, kGCnYBinsZR, kGCfirstYBinZR, kGClastYBinZR, "", "");}
@@ -1569,6 +1625,8 @@ void AddHistograms(AliGammaConversionHistograms *histograms){
     if(kGCplotESDConvGammaEdEdxP== kTRUE){ histograms->AddHistogram("ESD_ConvGamma_E_dEdxP" ,"" ,kGCnXBinsP, kGCfirstXBinP, kGClastXBinP,kGCnYBinsdEdx, kGCfirstYBindEdx, kGClastYBindEdx,"", "");}
     if(kGCplotESDConvGammaPdEdxP== kTRUE){ histograms->AddHistogram("ESD_ConvGamma_P_dEdxP" ,"" ,kGCnXBinsP, kGCfirstXBinP, kGClastXBinP,kGCnYBinsdEdx, kGCfirstYBindEdx, kGClastYBindEdx,"", "");}
 
+    if(kGCplotESDConvGammaQtAlfa== kTRUE){ histograms->AddHistogram("ESD_ConvGamma_alfa_qt" ,"" ,kGCnXBinsP, kGCfirstXBinAlpha, kGClastXBinAlpha,kGCnYBinsQt, kGCfirstYBinQt, kGClastYBinQt,"", "");}
+
 
                
     if(kGCplotESDTrueDalitzContaminationR == kTRUE){ histograms->AddHistogram("ESD_TrueDalitzContamination_R" ,"" , kGCnXBinsR, kGCfirstXBinR, kGClastXBinR, "", "");}
@@ -1704,7 +1762,16 @@ void AddHistograms(AliGammaConversionHistograms *histograms){
     if(kGCplotResolutionESDPt == kTRUE){histograms->AddHistogram("Resolution_ESD_Pt" ,"" , kGCnXBinsResPt, kGCfirstXBinResPt, kGClastXBinResPt,"","");}
     if(kGCplotResolutionESDR == kTRUE){histograms->AddHistogram("Resolution_ESD_R" ,"" , kGCnXBinsResR, kGCfirstXBinResR, kGClastXBinResR,"","");}
     if(kGCplotResolutionESDZ == kTRUE){histograms->AddHistogram("Resolution_ESD_Z" ,"" , kGCnXBinsResZ, kGCfirstXBinResZ, kGClastXBinResZ,"","");}
-               
+       
+    if(kGCplotResolutionPtdPt = kTRUE){
+       histograms->AddHistogram("Resolution_Gamma_dPt_Pt" ,"" , kGCnXBinsResdPt, kGCfirstXBinResdPt, kGClastXBinResdPt, kGCnYBinsResdPt, kGCfirstYBinResdPt, kGClastYBinResdPt, "", "");
+       histograms->AddHistogram("Resolution_E_dPt_Pt" ,"" , kGCnXBinsResdPt, kGCfirstXBinResdPt, kGClastXBinResdPt, kGCnYBinsResdPt, kGCfirstYBinResdPt, kGClastYBinResdPt, "", "");
+       histograms->AddHistogram("Resolution_P_dPt_Pt" ,"" , kGCnXBinsResdPt, kGCfirstXBinResdPt, kGClastXBinResdPt, kGCnYBinsResdPt, kGCfirstYBinResdPt, kGClastYBinResdPt, "", "");
+       histograms->AddHistogram("Resolution_Gamma_dPt_Phi" ,"" , kGCnYBinsResdR, -TMath::Pi(), TMath::Pi(), kGCnYBinsResdPt, kGCfirstYBinResdPt, kGClastYBinResdPt, "", "");
+       histograms->AddHistogram("Resolution_E_dPt_Pt" ,"" , kGCnYBinsResdR, -TMath::Pi(), TMath::Pi(), kGCnYBinsResdPt, kGCfirstYBinResdPt, kGClastYBinResdPt, "", "");
+       histograms->AddHistogram("Resolution_P_dPt_Phi" ,"" , kGCnYBinsResdR, -TMath::Pi(), TMath::Pi(), kGCnYBinsResdPt, kGCfirstYBinResdPt, kGClastYBinResdPt, "", "");
+    }
+
     if(kGCplotESDNumberOfV0s == kTRUE){histograms->AddHistogram("ESD_NumberOfV0s","Number of v0s",100, -0.5, 99.5,"","");}
     if(kGCplotESDNumberOfSurvivingV0s == kTRUE){histograms->AddHistogram("ESD_NumberOfSurvivingV0s","Number of surviving v0s",100, -0.5, 99.5,"","");}
     if(kGCplotESDNumberOfContributorsVtx == kTRUE){histograms->AddHistogram("ESD_NumberOfContributorsVtx","Number of contributors to vertex",100, -0.5, 99.5,"","");}
@@ -1728,19 +1795,31 @@ void AddHistograms(AliGammaConversionHistograms *histograms){
     if(kGCplotESDCutPt == kTRUE){histograms->AddHistogram("ESD_CutPt_InvMass" ,"Below p_{t} min" , kGCnXBinsGammaMass, kGCfirstXBinGammaMass, kGClastXBinGammaMass,"","");}
     if(kGCplotESDCutLine == kTRUE){histograms->AddHistogram("ESD_CutLine_InvMass" ,"Out of reconstruction area" , kGCnXBinsGammaMass, kGCfirstXBinGammaMass, kGClastXBinGammaMass,"","");}
     if(kGCplotESDCutZ == kTRUE){histograms->AddHistogram("ESD_CutZ_InvMass" ,"Out of reconstruction area" , kGCnXBinsGammaMass, kGCfirstXBinGammaMass, kGClastXBinGammaMass,"","");}
+    if(kGCplotESDCutMinClsTPC == kTRUE){histograms->AddHistogram("ESD_CutMinNClsTPC_InvMass" ,"Out of reconstruction area" , kGCnXBinsGammaMass, kGCfirstXBinGammaMass, kGClastXBinGammaMass,"","");}
+
     if(kGCplotESDGoodV0s == kTRUE){histograms->AddHistogram("ESD_GoodV0s_InvMass" ,"Good V0s" , kGCnXBinsGammaMass, kGCfirstXBinGammaMass, kGClastXBinGammaMass,"","");}
     if(kGCplotESDAllV0s == kTRUE){histograms->AddHistogram("ESD_AllV0s_InvMass" ,"All V0s" , kGCnXBinsGammaMass, kGCfirstXBinGammaMass, kGClastXBinGammaMass,"","");}
-    if(kGCplotESDAllV0s == kTRUE){histograms->AddHistogram("ESD_AllV0sCurrentFinder_InvMass" ,"All V0s Current Finder" , kGCnXBinsGammaMass, kGCfirstXBinGammaMass, kGClastXBinGammaMass,"","");}
+    if(kGCplotESDAllV0sCurrentFinder == kTRUE){histograms->AddHistogram("ESD_AllV0sCurrentFinder_InvMass" ,"All V0s Current Finder" , kGCnXBinsGammaMass, kGCfirstXBinGammaMass, kGClastXBinGammaMass,"","");}
+
+    if(kGCplotESDAllV0sCurrentFinderQtAlfa== kTRUE){ histograms->AddHistogram("ESD_AllV0sCurrentFinder_alfa_qt" ,"" ,kGCnXBinsP, kGCfirstXBinAlpha, kGClastXBinAlpha,kGCnYBinsQt, kGCfirstYBinQt, kGClastYBinQt,"", "");}
 
     if(kGCplotESDTrueConvGammaTrackLength == kTRUE){histograms->AddHistogram("ESD_TrueConvGamma_TrackLength","Track length of TrueConvGamma",kGCnXBinsTrackLength,kGCfirstXBinTrackLength,kGClastXBinTrackLength,"","");}
     if(kGCplotESDTrueConvGammaTrackLengthVSInvMass == kTRUE){histograms->AddHistogram("ESD_TrueConvGamma_TrackLengthVSInvMass","Track length of TrueConvGamma vs Inv mass",kGCnXBinsTrackLength,kGCfirstXBinTrackLength,kGClastXBinTrackLength,kGCnXBinsPt, kGCfirstXBinPt, kGClastXBinPt,"","");}
                
-    if(kGCplotMCPi0PtFiducial == kTRUE){ histograms->AddHistogram("MC_Pi0_Pt_Fiducial" ,"" , kGCnXBinsPt, kGCfirstXBinPt, kGClastXBinPt, "", "");}
-    if(kGCplotMCPi0PtWithinAcceptanceFiducial == kTRUE){ histograms->AddHistogram("MC_Pi0_Pt_withinAcceptance_Fiducial" ,"" , kGCnXBinsPt, kGCfirstXBinPt, kGClastXBinPt, "", "");}
-    if(kGCplotMCPi0PtConvGammaWithinAcceptanceFiducial == kTRUE){ histograms->AddHistogram("MC_Pi0_Pt_ConvGamma_withinAcceptance_Fiducial" ,"" , kGCnXBinsPt, kGCfirstXBinPt, kGClastXBinPt, "", "");} 
+    if(kGCplotOmegaSpectra == kTRUE){
+      histograms->AddHistogram("ESD_Omega_InvMass_vs_Pt" ,"Invariant Mass vs Pt" , kGCnXBinsSpectra, kGCfirstXBinSpectra, kGClastXBinSpectra,kGCnYBinsSpectra, kGCfirstYBinSpectra, kGClastYBinSpectra,"InvMass [GeV]","Pt [GeV]");
+      histograms->AddHistogram("ESD_Omega_InvMass","Invariant mass",kGCnXBinsSpectra,kGCfirstXBinSpectra, kGClastXBinSpectra,"InvMass [GeV]","Counts");
+
+      histograms->AddHistogram("ESD_Omega_Bck_InvMass_vs_Pt" ,"Invariant Mass vs Pt" , kGCnXBinsSpectra, kGCfirstXBinSpectra, kGClastXBinSpectra,kGCnYBinsSpectra, kGCfirstYBinSpectra, kGClastYBinSpectra,"InvMass [GeV]","Pt [GeV]");
+      histograms->AddHistogram("ESD_Omega_Bck_InvMass","Invariant mass",kGCnXBinsSpectra,kGCfirstXBinSpectra, kGClastXBinSpectra,"InvMass [GeV]","Counts");
+      histograms->AddHistogram("ESD_OmegaPipPinPi0_InvMass_vs_Pt" ,"Invariant Mass vs Pt" , kGCnXBinsSpectra, kGCfirstXBinSpectra, kGClastXBinSpectra,kGCnYBinsSpectra, kGCfirstYBinSpectra, kGClastYBinSpectra,"InvMass [GeV]","Pt [GeV]");
+      histograms->AddHistogram("ESD_OmegaPipPinPi0_InvMass","Invariant mass",kGCnXBinsSpectra,kGCfirstXBinSpectra, kGClastXBinSpectra,"InvMass [GeV]","Counts");
+
+    }
 
-               
     if(kGCplotPi0Spectra == kTRUE){
+      histograms->AddHistogram("ESD_Mother_alfa","Invariant mass",kGCnXBinsSpectra,kGCfirstXBinAlpha, kGClastXBinAlpha,"#alfa","Counts");
+
       histograms->AddHistogram("ESD_Mother_InvMass_vs_Pt" ,"Invariant Mass vs Pt" , kGCnXBinsSpectra, kGCfirstXBinSpectra, kGClastXBinSpectra,kGCnYBinsSpectra, kGCfirstYBinSpectra, kGClastYBinSpectra,"InvMass [GeV]","Pt [GeV]");
       histograms->AddHistogram("ESD_Mother_InvMass","Invariant mass",kGCnXBinsSpectra,kGCfirstXBinSpectra, kGClastXBinSpectra,"InvMass [GeV]","Counts");
       histograms->AddHistogram("ESD_Mother_InvMass_1212","Invariant mass",kGCnXBinsSpectra,kGCfirstXBinSpectra, kGClastXBinSpectra,"InvMass [GeV]","Counts");
@@ -1751,6 +1830,21 @@ void AddHistograms(AliGammaConversionHistograms *histograms){
       histograms->AddHistogram("ESD_Mother_InvMass_vs_Pt0909" ,"Invariant Mass vs Pt" , kGCnXBinsSpectra, kGCfirstXBinSpectra, kGClastXBinSpectra,kGCnYBinsSpectra, kGCfirstYBinSpectra, kGClastYBinSpectra,"InvMass [GeV]","Pt [GeV]");
 
 
+      histograms->AddHistogram("ESD_Mother_InvMass_GammaConvPHOS","Invariant mass",kGCnXBinsSpectra,kGCfirstXBinSpectra, kGClastXBinSpectra,"InvMass [GeV]","Counts");
+      histograms->AddHistogram("ESD_Mother_InvMass_vs_Pt_GammaConvPHOS" ,"Invariant Mass vs Pt" , kGCnXBinsSpectra, kGCfirstXBinSpectra, kGClastXBinSpectra,kGCnYBinsSpectra, kGCfirstYBinSpectra, kGClastYBinSpectra,"InvMass [GeV]","Pt [GeV]");
+      histograms->AddHistogram("ESD_Mother_InvMass_GammaConvPHOS_OpanLow","Invariant mass",kGCnXBinsSpectra,kGCfirstXBinSpectra, kGClastXBinSpectra,"InvMass [GeV]","Counts");
+      histograms->AddHistogram("ESD_Mother_InvMass_GammaConvPHOS_OpanHigh","Invariant mass",kGCnXBinsSpectra,kGCfirstXBinSpectra, kGClastXBinSpectra,"InvMass [GeV]","Counts");
+
+      histograms->AddHistogram("ESD_Mother_InvMass_GammaConvEMCAL","Invariant mass",kGCnXBinsSpectra,kGCfirstXBinSpectra, kGClastXBinSpectra,"InvMass [GeV]","Counts");
+ histograms->AddHistogram("ESD_Mother_InvMass_GammaConvEMCAL_Bck","Invariant mass",kGCnXBinsSpectra,kGCfirstXBinSpectra, kGClastXBinSpectra,"InvMass [GeV]","Counts");
+
+      histograms->AddHistogram("ESD_Mother_InvMass_vs_Pt_GammaConvEMCAL" ,"Invariant Mass vs Pt" , kGCnXBinsSpectra, kGCfirstXBinSpectra, kGClastXBinSpectra,kGCnYBinsSpectra, kGCfirstYBinSpectra, kGClastYBinSpectra,"InvMass [GeV]","Pt [GeV]");
+      histograms->AddHistogram("ESD_Mother_InvMass_vs_Pt_GammaConvEMCAL_Bck" ,"Invariant Mass vs Pt" , kGCnXBinsSpectra, kGCfirstXBinSpectra, kGClastXBinSpectra,kGCnYBinsSpectra, kGCfirstYBinSpectra, kGClastYBinSpectra,"InvMass [GeV]","Pt [GeV]");
+
+
+      histograms->AddHistogram("ESD_Mother_InvMass_GammaConvEMCAL_OpanLow","Invariant mass",kGCnXBinsSpectra,kGCfirstXBinSpectra, kGClastXBinSpectra,"InvMass [GeV]","Counts");
+      histograms->AddHistogram("ESD_Mother_InvMass_GammaConvEMCAL_OpanHigh","Invariant mass",kGCnXBinsSpectra,kGCfirstXBinSpectra, kGClastXBinSpectra,"InvMass [GeV]","Counts");
+
 
       //      if(kGCdoNeutralMesonV0MCCheck == kTRUE){
        histograms->AddHistogram("ESD_TruePi0_InvMass","Invariant mass",kGCnXBinsSpectra,kGCfirstXBinSpectra, kGClastXBinSpectra,"InvMass [GeV]","Counts");
@@ -1771,23 +1865,30 @@ void AddHistograms(AliGammaConversionHistograms *histograms){
 
 
     }
+
     if(kGCplotPi0Spectra == kTRUE && kGCcalculateBackground == kTRUE){
       for(Int_t z=0;z<8;z++){
        for(Int_t m=0;m<4;m++){
          histograms->AddHistogram(Form("%d%dESD_Background_InvMass_vs_Pt",z,m) ,"Background Invariant Mass vs Pt" , kGCnXBinsSpectra, kGCfirstXBinSpectra, kGClastXBinSpectra,kGCnYBinsSpectra, kGCfirstYBinSpectra, kGClastYBinSpectra,"InvMass [GeV]","Pt [GeV]");
-         histograms->AddHistogram(Form("%d%dESD_Background_InvMass",z,m),"Invariant mass background",kGCnXBinsSpectra,kGCfirstXBinSpectra, kGClastXBinSpectra,"InvMass BG [GeV]","Counts");
+
          
-         histograms->AddHistogram(Form("%d%dESD_Background_InvMass_vs_Pt_Fiducial",z,m) ,"Background Invariant Mass vs Pt |eta|<0.9" , kGCnXBinsSpectra, kGCfirstXBinSpectra, kGClastXBinSpectra,kGCnYBinsSpectra, kGCfirstYBinSpectra, kGClastYBinSpectra,"InvMass [GeV]","Pt [GeV]");
+         histograms->AddHistogram(Form("%d%dESD_Background_InvMass",z,m),"Invariant mass background",kGCnXBinsSpectra,kGCfirstXBinSpectra, kGClastXBinSpectra,"InvMass BG [GeV]","Counts");
+
+         // gives problems
+         //      cout<<"name-3::"<<Form("%d%dESD_Background_InvMass_vs_Pt_Fiducial",z,m) <<endl;
+         histograms->AddHistogram(Form("%d%dESD_Background_InvMassvsPtFid",z,m) ,"Background Invariant Mass vs Pt |eta|<0.9" , kGCnXBinsSpectra, kGCfirstXBinSpectra, kGClastXBinSpectra,kGCnYBinsSpectra, kGCfirstYBinSpectra, kGClastYBinSpectra,"InvMass [GeV]","Pt [GeV]");
+
+        
          histograms->AddHistogram(Form("%d%dESD_Background_InvMass_Fiducial",z,m),"Invariant mass background |eta|<0.9",kGCnXBinsSpectra,kGCfirstXBinSpectra, kGClastXBinSpectra,"InvMass BG [GeV]","Counts");
        }
       }
-
+    
       histograms->AddHistogram("ESD_Background_InvMass_vs_Pt" ,"Background Invariant Mass vs Pt" , kGCnXBinsSpectra, kGCfirstXBinSpectra, kGClastXBinSpectra,kGCnYBinsSpectra, kGCfirstYBinSpectra, kGClastYBinSpectra,"InvMass [GeV]","Pt [GeV]");
       histograms->AddHistogram("ESD_Background_InvMass","Invariant mass background",kGCnXBinsSpectra,kGCfirstXBinSpectra, kGClastXBinSpectra,"InvMass BG [GeV]","Counts");
 
       histograms->AddHistogram("ESD_Background_InvMass_vs_Pt_Fiducial" ,"Background Invariant Mass vs Pt |eta|<0.9" , kGCnXBinsSpectra, kGCfirstXBinSpectra, kGClastXBinSpectra,kGCnYBinsSpectra, kGCfirstYBinSpectra, kGClastYBinSpectra,"InvMass [GeV]","Pt [GeV]");
       histograms->AddHistogram("ESD_Background_InvMass_Fiducial","Invariant mass background |eta|<0.9",kGCnXBinsSpectra,kGCfirstXBinSpectra, kGClastXBinSpectra,"InvMass BG [GeV]","Counts");
-
+    
     }
     
   }// end kGCrunNeutralMeson
@@ -1801,3 +1902,211 @@ void AddHistograms(AliGammaConversionHistograms *histograms){
     histograms->AddHistogram("ESD_ZvsMultiplicity" ,"Z vs Multiplicity" , 1000, -10, 10,300,0,300,"Z[cm]","Multiplicity");
   }
 }
+
+
+
+Int_t SetAnalysisCutSelection(TString analysisCutSelection){
+  Int_t iResult=0;
+  
+  // set the cuts depending on the Cut Selection Id
+  // first number is dummy always set to 9 
+  const char* cutSelection = analysisCutSelection.Data(); 
+  
+  cout<<"cutSelection is: "<<cutSelection<<endl;
+  
+  if(analysisCutSelection.Length()!=10){
+    cout<<"Cut selection has the wrong length!"<<endl;
+    return 0;
+  }
+  char tmp = cutSelection[0];
+  //  cout<<"reading: "<<tmp<<endl;
+  Int_t goodId=atoi(&tmp);
+  tmp = cutSelection[1];
+  //  cout<<"reading: "<<tmp<<endl;
+  Int_t v0FinderType=atoi(&tmp);
+  tmp = cutSelection[2];
+  //  cout<<"reading: "<<tmp<<endl;
+  Int_t eProbCut=atoi(&tmp);
+  tmp = cutSelection[3];
+  //  cout<<"reading: "<<tmp<<endl;
+  Int_t ededxSigmaCut=atoi(&tmp);
+  tmp = cutSelection[4];
+  //  cout<<"reading: "<<tmp<<endl;
+  Int_t pidedxSigmaCut=atoi(&tmp);
+  tmp = cutSelection[5];
+  //  cout<<"reading: "<<tmp<<endl;
+  Int_t piMomdedxSigmaCut=atoi(&tmp);
+  tmp = cutSelection[6];
+  //  cout<<"reading: "<<tmp<<endl;
+  Int_t chi2GammaCut=atoi(&tmp);
+  tmp = cutSelection[7];
+  //  cout<<"reading: "<<tmp<<endl;
+  Int_t singlePtCut=atoi(&tmp);
+  tmp = cutSelection[8];
+  //  cout<<"reading: "<<tmp<<endl;
+  Int_t clsTPCCut=atoi(&tmp);
+  tmp = cutSelection[9];
+  //  cout<<"reading: "<<tmp<<endl;
+  Int_t etaCut=atoi(&tmp);
+
+
+
+  cout<<"etaCut: "<<etaCut<<endl;
+  cout<<"clsTPCCut: "<<clsTPCCut<<endl;
+  cout<<"singlePtCut: "<<singlePtCut<<endl;
+  cout<<"chi2GammaCut: "<<chi2GammaCut<<endl;
+  cout<<"piMomdedxSigmaCut: "<<piMomdedxSigmaCut<<endl;
+  cout<<"pidedxSigmaCut: "<<pidedxSigmaCut <<endl;
+  cout<<"ededxSigmaCut: "<<ededxSigmaCut <<endl;
+  cout<<"eProbCut: "<< eProbCut<<endl;
+  cout<<"v0FinderType: "<<v0FinderType <<endl;
+  cout<<"goodId: "<<goodId <<endl;
+
+  if(goodId !=9){
+    cout<<"Analysis Cut Selection too short or does not start with 9"<<endl;
+    return iResult;
+  }
+
+  switch (v0FinderType){
+  case 0:  // on fly V0 finder
+    kGCUseOnFlyV0Finder=kTRUE;
+    break;
+  case 1:  // offline V0 finder
+    kGCUseOnFlyV0Finder=kFALSE;
+    break;
+  default:
+    return iResult;
+  }
+  switch(eProbCut){
+  case 0:  // 0.
+    kGCprobElectron = 0.000;
+    break;
+  case 1:  // 0.001
+    kGCprobElectron = 0.001;
+    break;
+  case 2:  // 0.01
+    kGCprobElectron = 0.01;
+    break;
+  default:
+    return iResult;
+  }
+
+  switch(ededxSigmaCut){
+  case 0: // -10,10
+    kGCPIDnSigmaBelowElectronLine=-10;
+    kGCPIDnSigmaAboveElectronLine=10;
+    break;
+  case 1: // -5,5 
+    kGCPIDnSigmaBelowElectronLine=-5;
+    kGCPIDnSigmaAboveElectronLine=5;
+    break;
+  case 2: // -3,5
+    kGCPIDnSigmaBelowElectronLine=-3;
+    kGCPIDnSigmaAboveElectronLine=5;
+    break;
+  default:
+    return iResult;
+  }
+  
+  switch(pidedxSigmaCut){
+  case 0:  // -10
+    kGCPIDnSigmaAbovePionLine=-10;
+    break;
+  case 1:   // 0
+    kGCPIDnSigmaAbovePionLine=0;
+    break;
+  case 2:  // 1
+    kGCPIDnSigmaAbovePionLine=1;
+    break;
+  default:
+    return iResult;
+  }
+  
+  switch(piMomdedxSigmaCut){
+  case 0:  // 0.5 GeV
+    kGCPIDMinPnSigmaAbovePionLine=0.5;
+    break;
+  case 1:  // 1. GeV
+    kGCPIDMinPnSigmaAbovePionLine=1.;
+    break;
+  case 2:  // 1.5 GeV
+    kGCPIDMinPnSigmaAbovePionLine=1.5;
+    break;
+  default:
+    return iResult;
+  }
+  
+  switch(chi2GammaCut){
+  case 0: // 100
+    kGCchi2CutConversion = 100.;
+    break;
+  case 1:  // 50
+    kGCchi2CutConversion = 50.;
+    break;
+  case 2:  // 30
+    kGCchi2CutConversion = 30.;
+    break;
+  default:
+    return iResult;
+  }
+
+  switch(singlePtCut){
+  case 0: // 0.050 GeV
+    kGCsingleptCut = 0.050;
+    break;
+  case 1:  // 0.100 GeV
+    kGCsingleptCut = 0.100;
+    break;
+  case 2:  // 0.150 GeV
+    kGCsingleptCut = 0.150;
+    break;
+  case 3:  // 0.200 GeV
+    kGCsingleptCut = 0.200;
+    break;
+  default:
+    return iResult;
+ }
+
+  switch(clsTPCCut){
+  case 0: // 0 
+    kGCminClsTPCCut= 0.;
+    break;
+  case 1:  // 70 
+    kGCminClsTPCCut= 70.;
+    break;
+  case 2:  // 80 
+    kGCminClsTPCCut= 80.;
+    break;
+  case 3:  // 100 
+    kGCminClsTPCCut= 100.;
+    break;
+  default:
+    return iResult;
+  }
+
+  switch(etaCut){
+  case 0: // 0.9 
+    kGCetaCut    = 0.9;
+    kGCLineCutZRSlope = tan(2*atan(exp(-kGCetaCut)));
+    break;
+  case 1:  // 1.2
+    kGCetaCut    = 1.2;
+    kGCLineCutZRSlope = tan(2*atan(exp(-kGCetaCut)));
+    break;
+  case 2:  // 1.4
+    kGCetaCut    = 1.4;
+    kGCLineCutZRSlope = tan(2*atan(exp(-kGCetaCut)));
+    break;
+  default:
+    return iResult;
+  }
+
+  iResult=1;
+  return iResult;
+}
+
+
+
+
+
+