//
SetMC(isMC);
+
+ for (Int_t i = 0; i < 5; i++) fTPCpar[i] = 0.0;
}
//_________________________________________________________________________________________________
AliESDtrackCuts* GetCutsITS() {return &fESDtrackCutsITS;}
void CopyCutsTPC(const AliESDtrackCuts *cuts) {fESDtrackCutsTPC = (*cuts);}
void CopyCutsITS(const AliESDtrackCuts *cuts) {fESDtrackCutsITS = (*cuts);}
- void CopyCutsTPC(AliESDtrackCuts cuts) {fESDtrackCutsTPC = cuts;}
- void CopyCutsITS(AliESDtrackCuts cuts) {fESDtrackCutsITS = cuts;}
+ //void CopyCutsTPC(AliESDtrackCuts cuts) {fESDtrackCutsTPC = cuts;}
+ //void CopyCutsITS(AliESDtrackCuts cuts) {fESDtrackCutsITS = cuts;}
virtual Bool_t IsSelected(TObject *object);
virtual void Print(const Option_t *option = "") const;
//_____________________________________________________________________________
Bool_t AliRsnEvent::GetAngleDistr
-(Double_t &angleMean, Double_t &angleRMS, AliRsnDaughter leading)
+(Double_t &angleMean, Double_t &angleRMS, AliRsnDaughter *leading)
{
//
// Takes the leading particle and computes the mean and RMS
// with respect to the direction of leading particle.
//
- if (!leading.IsOK()) return kFALSE;
+ if (!leading) return kFALSE;
+ if (!leading->IsOK()) return kFALSE;
Int_t i, count, nTracks = fRef->GetNumberOfTracks();
Double_t angle, angle2Mean = 0.0;
for (i = 0, count = 0; i < nTracks; i++) {
AliRsnDaughter trk = GetDaughter(i);
- if (trk.GetID() == leading.GetID()) continue;
+ if (trk.GetID() == leading->GetID()) continue;
- angle = leading.Prec().Angle(trk.Prec().Vect());
+ angle = leading->Prec().Angle(trk.Prec().Vect());
angleMean += angle;
angle2Mean += angle * angle;
AliAODTrack *tp = ev->GetTrack(v0->GetPosID());
AliAODTrack *tn = ev->GetTrack(v0->GetNegID());
if (mcArray && tp && tn) {
- Int_t lp = TMath::Abs(tp->GetLabel());
- Int_t ln = TMath::Abs(tn->GetLabel());
+ Int_t lp = TMath::Abs(tp->GetLabel());
+ Int_t ln = TMath::Abs(tn->GetLabel());
// loop on array to find MC daughters
AliAODMCParticle *pp = 0x0, *pn = 0x0;
TObjArrayIter next(mcArray);
AliAODMCParticle *part = 0x0;
while ((part = (AliAODMCParticle*)next())) {
- if (TMath::Abs(part->GetLabel()) == lp) pp = (AliAODMCParticle*)mcArray->IndexOf(part);
- if (TMath::Abs(part->GetLabel()) == ln) pn = (AliAODMCParticle*)mcArray->IndexOf(part);
+ if (TMath::Abs(part->GetLabel()) == lp) pp = part;
+ if (TMath::Abs(part->GetLabel()) == ln) pn = part;
}
// assign a MC reference and a label only to true V0s
if (pp->GetMother() == pn->GetMother() && pp->GetMother() >= 0) out.SetLabel(pp->GetMother());
void SetLeadingParticle(AliRsnDaughter &leading) {if (fLeading >= 0) SetDaughter(leading, fLeading);}
Int_t SelectLeadingParticle(Double_t ptMin = 0.0, AliRsnCutPID *cutPID = 0x0);
Double_t GetAverageMomentum(Int_t &count, AliRsnCutPID *cutPID = 0x0);
- Bool_t GetAngleDistr(Double_t &angleMean, Double_t &angleRMS, AliRsnDaughter reference);
+ Bool_t GetAngleDistr(Double_t &angleMean, Double_t &angleRMS, AliRsnDaughter *reference);
private:
//
// Unique constructor
//
+
+ Int_t k;
+
+ for (k = 0; k < 2; k++) fDCA[k] = 0.0;
+ for (k = 0; k < 6; k++) fITSmap[k] = 0;
+ for (k = 0; k < AliPID::kSPECIES; k++) {
+ fITSnsigma[k] = 0.0;
+ fTPCnsigma[k] = 0.0;
+ fTOFref [k] = 0.0;
+ fTOFsigma [k] = 0.0;
+ }
+ for (k = 0; k < 3; k++) {
+ fPsim[k] = 0.0;
+ fPrec[k] = 0.0;
+ fPtpc[k] = 0.0;
+ }
}
AliRsnMonitorTrack::AliRsnMonitorTrack(const AliRsnMonitorTrack& copy) :
}
//_____________________________________________________________________________
-Double_t AliRsnMother::AngleTo(AliRsnDaughter track, Bool_t mc)
+Double_t AliRsnMother::AngleTo(AliRsnDaughter *track, Bool_t mc)
{
//
// Compute the angle betwee this and the passed object
//
TLorentzVector &me = (mc ? fSumMC : fSum);
- TLorentzVector &he = track.P(mc);
+ TLorentzVector &he = track->P(mc);
return me.Angle(he.Vect());
}
// useful computations/operations
void ComputeSum(Double_t mass1, Double_t mass2);
- Double_t AngleTo(AliRsnDaughter track, Bool_t mc = kFALSE);
+ Double_t AngleTo(AliRsnDaughter *track, Bool_t mc = kFALSE);
Double_t AngleToLeading(Bool_t &success);
Double_t CosThetaStar(Bool_t first = kTRUE, Bool_t useMC = kFALSE);
void ResetPair();
if (!IsMixing()) {
- if (fMCOnly && fMCEvent) {
+ if (fMCOnly && fMCEvent[0]) {
fRsnEvent[0].SetRef(fMCEvent[0]);
fRsnEvent[0].SetRefMC(fMCEvent[0]);
} else if (fESDEvent[0]) {
// initialize the above 4-vectors according to the
// expected target type (which has been checked above)
+ // in particular, the 'fEvent' data member of base AliRsnTarget
+ // will be *always* well initialized if the TargetOK() returns kTRUE
switch (fTargetType) {
case AliRsnTarget::kDaughter:
pRec = fDaughter->Prec();
AliError(Form("[%s] Wrong type", GetName()));
return kFALSE;
}
- if (fEvent) {
- leadingID = fEvent->GetLeadingParticleID();
- esdev = fEvent->GetRefESD();
- }
+ leadingID = fEvent->GetLeadingParticleID();
+ esdev = fEvent->GetRefESD();
+
if (esdt) status = esdt->GetStatus();
if (aodt) status = aodt->GetStatus();
AliRsnDaughter leadingPart = fEvent->GetDaughter(leadingID);
AliVParticle *ref = leadingPart.GetRef();
fComputedValue = ref->Pt();
+ return kTRUE;
} else {
AliError(Form("[%s] Leading ID has bad value (%d)", GetName(), leadingID));
return kFALSE;
// retrieve ESD event and related stack (if available)
AliESDEvent *esd = dynamic_cast<AliESDEvent*>(fInputEvent);
AliStack *stack = (fMCEvent ? fMCEvent->Stack() : 0x0);
+ if (!esd) {
+ AliError("No ESD");
+ return;
+ }
// get the best primary vertex:
// first try the one with tracks
fKmask(t.fKmask),
fNoTOFT0(t.fNoTOFT0)
{
+ fCalculated[0] = t.fCalculated[0];
+ fCalculated[1] = t.fCalculated[1];
+ fCalculated[2] = t.fCalculated[2];
+ fCalculated[3] = t.fCalculated[3];
}
//____________________________________________________________________________
//
// assign. operator
//
+
+ fCalculated[0] = t.fCalculated[0];
+ fCalculated[1] = t.fCalculated[1];
+ fCalculated[2] = t.fCalculated[2];
+ fCalculated[3] = t.fCalculated[3];
fSettings = t.fSettings;
if (this == &t)