#include "AliAODHeader.h"
#include "AliCentrality.h"
#include "AliEventplane.h"
+#include "AliMagF.h"
+#include <TGeoGlobalMagField.h>
#include <TGeoMatrix.h>
#include <TObjString.h>
//______________________________________________________________________________
AliAODHeader::AliAODHeader() :
- AliVHeader(),
+ AliVAODHeader(),
fMagneticField(-999.),
fMuonMagFieldScale(-999.),
fCentrality(-999.),
fRefMultNeg(-999),
fNMuons(0),
fNDimuons(0),
+ fNGlobalMuons(0), // AU
+ fNGlobalDimuons(0), // AU
fEventType(0),
fOrbitNumber(0),
fPeriodNumber(0),
UInt_t nOrbit,
UInt_t nPeriod,
const Char_t *title) :
- AliVHeader(),
+ AliVAODHeader(),
fMagneticField(-999.),
fMuonMagFieldScale(-999.),
fCentrality(-999.),
fRefMultNeg(-999),
fNMuons(0),
fNDimuons(0),
+ fNGlobalMuons(0), // AU
+ fNGlobalDimuons(0), // AU
fEventType(0),
fOrbitNumber(nOrbit),
fPeriodNumber(nPeriod),
const Float_t *vzeroEqFactors,
const Char_t *title,
Int_t nMuons,
- Int_t nDimuons) :
- AliVHeader(),
+ Int_t nDimuons,
+ Int_t nGlobalMuons, // AU
+ Int_t nGlobalDimuons) : // AU
+ AliVAODHeader(),
fMagneticField(magField),
fMuonMagFieldScale(muonMagFieldScale),
fCentrality(cent),
fRefMultNeg(refMultNeg),
fNMuons(nMuons),
fNDimuons(nDimuons),
+ fNGlobalMuons(nGlobalMuons), // AU
+ fNGlobalDimuons(nGlobalDimuons), // AU
fEventType(evttype),
fOrbitNumber(nOrbit),
fPeriodNumber(nPeriod),
//______________________________________________________________________________
AliAODHeader::AliAODHeader(const AliAODHeader& hdr) :
- AliVHeader(hdr),
+ AliVAODHeader(hdr),
fMagneticField(hdr.fMagneticField),
fMuonMagFieldScale(hdr.fMuonMagFieldScale),
fCentrality(hdr.fCentrality),
fRefMultNeg(hdr.fRefMultNeg),
fNMuons(hdr.fNMuons),
fNDimuons(hdr.fNDimuons),
+ fNGlobalMuons(hdr.fNGlobalMuons), // AU
+ fNGlobalDimuons(hdr.fNGlobalDimuons), // AU
fEventType(hdr.fEventType),
fOrbitNumber(hdr.fOrbitNumber),
fPeriodNumber(hdr.fPeriodNumber),
fTriggerCluster = hdr.fTriggerCluster;
fNMuons = hdr.fNMuons;
fNDimuons = hdr.fNDimuons;
+ fNGlobalMuons = hdr.fNGlobalMuons; // AU
+ fNGlobalDimuons = hdr.fNGlobalDimuons; // AU
fDiamondZ = hdr.fDiamondZ;
fDiamondSig2Z = hdr.fDiamondSig2Z;
fOfflineTrigger = hdr.fOfflineTrigger;
}
//__________________________________________________________________________
-Int_t AliAODHeader::FindIRIntInteractionsBXMap(Int_t difference)
+Int_t AliAODHeader::FindIRIntInteractionsBXMap(Int_t difference) const
{
//
// The mapping is of 181 bits, from -90 to +90
}
//__________________________________________________________________________
-Int_t AliAODHeader::GetIRInt2ClosestInteractionMap()
+Int_t AliAODHeader::GetIRInt2ClosestInteractionMap() const
{
//
// Calculation of the closest interaction
}
//__________________________________________________________________________
-Int_t AliAODHeader::GetIRInt1ClosestInteractionMap(Int_t gap)
+Int_t AliAODHeader::GetIRInt1ClosestInteractionMap(Int_t gap) const
{
//
// Calculation of the closest interaction
}
//__________________________________________________________________________
-Int_t AliAODHeader::GetIRInt2LastInteractionMap()
+Int_t AliAODHeader::GetIRInt2LastInteractionMap() const
{
//
// Calculation of the last interaction
Int_t last = lastPositive > TMath::Abs(lastNegative) ? lastPositive : TMath::Abs(lastNegative);
return last;
}
+
+//__________________________________________________________________________
+Bool_t AliAODHeader::InitMagneticField() const
+{
+ // Create mag field from stored information
+ //
+ const double def5kg = 5.00667905807495117e+00;
+ const double def2kg = 2.04487347602844238e+00;
+ //
+ AliMagF* fld = (AliMagF*) TGeoGlobalMagField::Instance()->GetField();
+ if (fld) {
+ if (TGeoGlobalMagField::Instance()->IsLocked()) {
+ if (fld->TestBit(AliMagF::kOverrideGRP)) {
+ AliInfo("ExpertMode!!! Information on magnet currents will be ignored !");
+ AliInfo("ExpertMode!!! Running with the externally locked B field !");
+ return kTRUE;
+ }
+ }
+ AliInfo("Destroying existing B field instance!");
+ delete TGeoGlobalMagField::Instance();
+ }
+ //
+ double fc5 = fMagneticField/def5kg;
+ double fc2 = fMagneticField/def2kg;
+ Bool_t use5 = TMath::Abs(TMath::Abs(fc5)-1.) < TMath::Abs(TMath::Abs(fc2)-1.);
+ //
+ fld = new AliMagF("mag","mag",use5 ? fc5 : fc2, fMuonMagFieldScale, use5 ? AliMagF::k5kG : AliMagF::k2kG);
+ //
+ if (fld) {
+ TGeoGlobalMagField::Instance()->SetField( fld );
+ TGeoGlobalMagField::Instance()->Lock();
+ AliInfo("Running with the B field constructed out of the AOD Header !");
+ return kTRUE;
+ }
+ else {
+ AliError("Failed to create a B field map !");
+ return kFALSE;
+ }
+ //
+}