AliPPVsMultUtils: Change to AliVEvent
authorddobrigk <david.dobrigkeit.chinellato@cern.ch>
Fri, 29 Aug 2014 18:28:38 +0000 (15:28 -0300)
committerddobrigk <david.dobrigkeit.chinellato@cern.ch>
Sat, 30 Aug 2014 19:53:07 +0000 (16:53 -0300)
ANALYSIS/AliPPVsMultUtils.cxx
ANALYSIS/AliPPVsMultUtils.h

index e70c7fe..4b2913b 100644 (file)
@@ -29,6 +29,7 @@ ClassImp(AliPPVsMultUtils)
 //______________________________________________________________________
 AliPPVsMultUtils::AliPPVsMultUtils():TObject(),
 fRunNumber(0),
+fCalibrationLoaded(0),
 fBoundaryHisto_V0M(0),
 fBoundaryHisto_V0A(0),
 fBoundaryHisto_V0C(0),
@@ -43,6 +44,7 @@ fBoundaryHisto_V0CEq(0)
 //_____________________________________________________________________________
 AliPPVsMultUtils::AliPPVsMultUtils(const AliPPVsMultUtils &c) : TObject(c),
 fRunNumber(0),
+fCalibrationLoaded(0),
 fBoundaryHisto_V0M(0),
 fBoundaryHisto_V0A(0),
 fBoundaryHisto_V0C(0),
@@ -68,81 +70,16 @@ AliPPVsMultUtils &AliPPVsMultUtils::operator=(const AliPPVsMultUtils &c)
 }
 
 //______________________________________________________________________
-Float_t AliPPVsMultUtils::GetMultiplicityPercentile(AliESDEvent *event, TString lMethod)
-// Function to get multiplicity quantiles in ESDs. All methods would work 
-// with AliVEvent except GetPrimaryVertexSPD which exists in both ESD and AOD 
-// but not in the AliVEvent class; therefore two functions are included. 
-// N.B.: Any change to this method has to be propagated by hand to the function 
-// below! 
+Float_t AliPPVsMultUtils::GetMultiplicityPercentile(AliVEvent *event, TString lMethod)
+// Function to get multiplicity quantiles 
 {
     Int_t lRequestedRunNumber = event->GetRunNumber();
-    if( lRequestedRunNumber != fRunNumber ) LoadCalibration( lRequestedRunNumber );
+    if( lRequestedRunNumber != fRunNumber ) fCalibrationLoaded = LoadCalibration( lRequestedRunNumber );
     
-    Float_t lreturnval = -1;
-    
-    //Get VZERO Information for multiplicity later
-    AliVVZERO* esdV0 = event->GetVZEROData();
-    if (!esdV0) {
-        AliError("AliVVZERO not available");
-        return -1;
+    if ( !fCalibrationLoaded ){ 
+      return -1000; //Return absurd value (hopefully noone will use this...) 
     }
     
-    // VZERO PART
-    Float_t  multV0A  = 0;            //  multiplicity from V0 reco side A
-    Float_t  multV0C  = 0;            //  multiplicity from V0 reco side C
-    Float_t  multV0AEq  = 0;          //  multiplicity from V0 reco side A
-    Float_t  multV0CEq  = 0;          //  multiplicity from V0 reco side C
-    Float_t  multV0ACorr  = 0;            //  multiplicity from V0 reco side A
-    Float_t  multV0CCorr  = 0;            //  multiplicity from V0 reco side C
-    
-    //Non-Equalized Signal: copy of multV0ACorr and multV0CCorr from AliCentralitySelectionTask
-    //Getters for uncorrected multiplicity
-    multV0A=esdV0->GetMTotV0A();
-    multV0C=esdV0->GetMTotV0C();
-    const AliESDVertex *lPrimarySPDVtx         = event->GetPrimaryVertexSPD();
-    
-    //Get Z vertex position of SPD vertex (why not Tracking if available?)
-    Float_t zvtx = lPrimarySPDVtx->GetZ();
-    
-    //Acquire Corrected multV0A
-    multV0ACorr = AliESDUtils::GetCorrV0A(multV0A,zvtx);
-    multV0CCorr = AliESDUtils::GetCorrV0C(multV0C,zvtx);
-    
-    // Equalized signals // From AliCentralitySelectionTask // Updated
-    for(Int_t iCh = 32; iCh < 64; ++iCh) {
-        Double_t mult = event->GetVZEROEqMultiplicity(iCh);
-        multV0AEq += mult;
-    }
-    for(Int_t iCh = 0; iCh < 32; ++iCh) {
-        Double_t mult = event->GetVZEROEqMultiplicity(iCh);
-        multV0CEq += mult;
-    }
-    
-    if ( lMethod == "V0M" ) lreturnval =
-        fBoundaryHisto_V0M -> GetBinContent( fBoundaryHisto_V0M->FindBin(multV0ACorr+multV0CCorr) );
-    if ( lMethod == "V0A" ) lreturnval =
-        fBoundaryHisto_V0A -> GetBinContent( fBoundaryHisto_V0A->FindBin(multV0ACorr) );
-    if ( lMethod == "V0C" ) lreturnval =
-        fBoundaryHisto_V0C -> GetBinContent( fBoundaryHisto_V0C->FindBin(multV0CCorr) );
-    //equalized
-    if ( lMethod == "V0MEq" ) lreturnval =
-        fBoundaryHisto_V0MEq -> GetBinContent( fBoundaryHisto_V0MEq->FindBin(multV0AEq+multV0CEq) );
-    if ( lMethod == "V0AEq" ) lreturnval =
-        fBoundaryHisto_V0AEq -> GetBinContent( fBoundaryHisto_V0AEq->FindBin(multV0AEq) );
-    if ( lMethod == "V0CEq" ) lreturnval =
-        fBoundaryHisto_V0CEq -> GetBinContent( fBoundaryHisto_V0CEq->FindBin(multV0CEq) );
-    
-    return lreturnval;
-}
-
-//______________________________________________________________________
-Float_t AliPPVsMultUtils::GetMultiplicityPercentile(AliAODEvent *event, TString lMethod)
-// Carbon-copy version of ESD function (GetPrimaryVertexSPD won't work 
-// in the base class AliVEvent...FIXME) 
-{
-    Int_t lRequestedRunNumber = event->GetRunNumber();
-    if( lRequestedRunNumber != fRunNumber ) LoadCalibration( lRequestedRunNumber );
-    
     Float_t lreturnval = -1;
     
     //Get VZERO Information for multiplicity later
@@ -164,8 +101,22 @@ Float_t AliPPVsMultUtils::GetMultiplicityPercentile(AliAODEvent *event, TString
     //Getters for uncorrected multiplicity
     multV0A=esdV0->GetMTotV0A();
     multV0C=esdV0->GetMTotV0C();
-    const AliAODVertex *lPrimarySPDVtx         = event->GetPrimaryVertexSPD();
-    
+   
+    //Getting around to the SPD vertex -> typecast to ESD/AOD
+    const AliVVertex *lPrimarySPDVtx = NULL;
+    /* get ESD vertex SPD */
+    if (event->InheritsFrom("AliESDEvent")) {
+      AliESDEvent *esdevent = dynamic_cast<AliESDEvent *>(event);
+      if (!esdevent) return kFALSE;
+      lPrimarySPDVtx = esdevent->GetPrimaryVertexSPD();
+    }
+    /* get AOD vertex SPD */
+    else if (event->InheritsFrom("AliAODEvent")) {
+      AliAODEvent *aodevent = dynamic_cast<AliAODEvent *>(event);
+      if (!aodevent) return kFALSE;
+      lPrimarySPDVtx = aodevent->GetPrimaryVertexSPD();
+    }
+   
     //Get Z vertex position of SPD vertex (why not Tracking if available?)
     Float_t zvtx = lPrimarySPDVtx->GetZ();
     
@@ -239,7 +190,7 @@ Bool_t AliPPVsMultUtils::LoadCalibration(Int_t lLoadThisCalibration)
     
     if ( !fBoundaryHisto_V0M   || !fBoundaryHisto_V0A   || !fBoundaryHisto_V0C ||
         !fBoundaryHisto_V0MEq || !fBoundaryHisto_V0AEq || !fBoundaryHisto_V0CEq ){
-        AliFatal(Form("No calibration for run %i exists at the moment!",lLoadThisCalibration));
+        AliInfo(Form("No calibration for run %i exists at the moment!",lLoadThisCalibration));
         return kFALSE; //return denial
     }
     
index 4c4a63f..f275b56 100644 (file)
@@ -21,13 +21,13 @@ public:
 
     //Utility functions
     //for the base virtual event class: all methods are common
-    Float_t GetMultiplicityPercentile(AliESDEvent *event, TString lMethod = "V0M");
-    Float_t GetMultiplicityPercentile(AliAODEvent *event, TString lMethod = "V0M");
+    Float_t GetMultiplicityPercentile(AliVEvent *event, TString lMethod = "V0M");
     Bool_t LoadCalibration(Int_t lLoadThisCalibration);
     
 private:
     
-    Int_t fRunNumber; // minimum vertex contributors
+    Int_t fRunNumber; // for control of run changes
+    Bool_t fCalibrationLoaded; // control flag
     
     TH1F *fBoundaryHisto_V0M;
     TH1F *fBoundaryHisto_V0A;