for(Int_t it=0; it<jettracklist->GetSize(); ++it){
AliVParticle* trackVP = dynamic_cast<AliVParticle*>(jettracklist->At(it));
+ if(!trackVP)continue;
TLorentzVector* trackV = new TLorentzVector(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P());
Float_t jetPt = jet->Pt();
for(Int_t ij=0; ij<nGenJets; ++ij){
AliAODJet* jet = dynamic_cast<AliAODJet*>(fJetsGen->At(ij));
+ if(!jet)continue;
if(fQAMode&2) fQAJetHistosGen->FillJetQA( jet->Eta(), TVector2::Phi_0_2pi(jet->Phi()), jet->Pt());
if(ij==0){ // leading jet
{
if (it < jettracklist1->GetSize())
{
- Float_t trackPt1 = (dynamic_cast<AliVParticle*> (jettracklist1->At(it)))->Pt();
+ AliVParticle *vp = (dynamic_cast<AliVParticle*> (jettracklist1->At(it)));
+ Float_t trackPt1 = (vp?vp->Pt():0);
Float_t jetPt1 = jet1->Pt();
Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
{
AliAODJet* jet1 = dynamic_cast<AliAODJet*>(fJetsGen->At(0));
AliAODJet* jet2 = dynamic_cast<AliAODJet*>(fJetsGen->At(1));
+ if(jet1&&jet2){
Double_t deltaPhi = 0;
Double_t phi1 = TVector2::Phi_0_2pi(jet1->Phi());
} // End if(jetBin > 0)
else { Printf("Jet bins for di-jet studies not set !");}
} // End if (go)
+ }// end if jet1 and jet2
} // End if(nGenJets > 1)
} // end: di-jet
return -1;
}
+ if(!fAOD) return -1;
+
if(!fAOD->GetTracks()) return 0;
if(type==kTrackUndef) return 0;
if(type==kTrackAODCuts || type==kTrackAODQualityCuts || type==kTrackAOD){
// all rec. tracks, esd filter mask, eta range
- if(!fAOD) return -1;
+
for(Int_t it=0; it<fAOD->GetNumberOfTracks(); ++it){
AliAODTrack *tr = fAOD->GetTrack(it);
for(int it=0; it<tca->GetEntriesFast(); ++it){
AliAODMCParticle *part = dynamic_cast<AliAODMCParticle*>(tca->At(it));
+ if(!part)continue;
if(!part->IsPhysicalPrimary())continue;
if (type==kTrackAODMCCharged || type==kTrackAODMCChargedAcceptance){
for (Int_t itrack=0; itrack<inputlist->GetSize(); itrack++){
AliVParticle* track = dynamic_cast<AliVParticle*>(inputlist->At(itrack));
-
+ if(!track)continue;
Double_t trackMom[3];
track->PxPyPz(trackMom);
TVector3 track3mom(trackMom);
for(Int_t iRec=0; iRec<nTracksRec; iRec++){
AliAODTrack* rectrack = dynamic_cast<AliAODTrack*>(tracksRec->At(iRec));
-
+ if(!rectrack)continue;
Int_t label = TMath::Abs(rectrack->GetLabel());
// find MC track in our list
AliAODMCParticle* gentrack = dynamic_cast<AliAODMCParticle*> (tca->At(label));
-
+
Int_t listIndex = -1;
if(gentrack) listIndex = tracksAODMCCharged->IndexOf(gentrack);
for(Int_t iGen=0; iGen<nTracksGen; iGen++){
AliAODMCParticle* gentrack = dynamic_cast<AliAODMCParticle*> (tracksAODMCCharged->At(iGen));
-
+ if(!gentrack)continue;
Int_t pdg = gentrack->GetPdgCode();
// 211 - pi, 2212 - proton, 321 - Kaon, 11 - electron, 13 - muon
if(iRec>=0){
Float_t genPt = gentrack->Pt();
- Float_t recPt = (dynamic_cast<AliAODTrack*>(tracksRec->At(iRec)))->Pt();
-
- fh2PtRecVsGenPrim->Fill(genPt,recPt);
+ AliAODTrack* vt = dynamic_cast<AliAODTrack*>(tracksRec->At(iRec));
+ if(vt){
+ Float_t recPt = vt->Pt();
+ fh2PtRecVsGenPrim->Fill(genPt,recPt);
+ }
}
}
}
if(isGenPrim[iGen] != 1) continue; // select primaries
AliAODMCParticle* gentrack = dynamic_cast<AliAODMCParticle*> (tracksGen->At(iGen));
-
+ if(gentrack)continue;
Double_t ptGen = gentrack->Pt();
Double_t etaGen = gentrack->Eta();
Double_t phiGen = TVector2::Phi_0_2pi(gentrack->Phi());
for(Int_t iTr=0; iTr<nTracksJet; iTr++){
AliAODMCParticle* gentrack = dynamic_cast<AliAODMCParticle*> (jetTrackList->At(iTr));
-
+ if(!gentrack)continue;
// find jet track in gen tracks list
Int_t iGen = tracksGen->IndexOf(gentrack);
if(dynamic_cast<AliFragFuncHistos*>(histGen) && dynamic_cast<AliFragFuncHistos*>(histRec)){
- AliFragFuncHistos* effFFhistGen = dynamic_cast<AliFragFuncHistos*>(histGen);
- AliFragFuncHistos* effFFhistRec = dynamic_cast<AliFragFuncHistos*>(histRec);
+ // after checking can afford normal cast
+ AliFragFuncHistos* effFFhistGen = (AliFragFuncHistos*)(histGen);
+ AliFragFuncHistos* effFFhistRec = (AliFragFuncHistos*)(histRec);
if(useRecJetPt) effFFhistGen->FillFF( ptGen, jetPtRec, incrementJetPtGenFF );
else effFFhistGen->FillFF( ptGen, jetPtGen, incrementJetPtGenFF );
if(isGenPrim[iGen] != 1) continue; // select primaries
AliAODMCParticle* gentrack = dynamic_cast<AliAODMCParticle*> (tracksGen->At(iGen));
-
+ if(!gentrack)continue;
Double_t ptGen = gentrack->Pt();
Double_t etaGen = gentrack->Eta();
Double_t phiGen = TVector2::Phi_0_2pi(gentrack->Phi());
Int_t iRec = indexAODTr[iGen]; // can be -1 if no good reconstructed track
if(iRec>=0){
AliAODTrack* rectrack = dynamic_cast<AliAODTrack*>(tracksRec->At(iRec));
+ if(!rectrack)continue;
Double_t ptRec = rectrack->Pt();
Double_t entries[2] = {ptRec,ptGen}; // AliCorrFW convention: gen vs rec
for(Int_t iTr=0; iTr<nTracksJet; iTr++){
AliAODMCParticle* gentrack = dynamic_cast<AliAODMCParticle*> (jetTrackList->At(iTr));
-
+ if(!gentrack)continue;
// find jet track in gen tracks list
Int_t iGen = tracksGen->IndexOf(gentrack);
if(iRec>=0){
AliAODTrack* rectrack = dynamic_cast<AliAODTrack*>(tracksRec->At(iRec));
- Double_t ptRec = rectrack->Pt();
-
- Double_t zRec = ptRec / jetPtGen;
- Double_t xiRec = 0;
- if(zRec>0) xiRec = TMath::Log(1/zRec);
-
- Double_t jetPt = useRecJetPt ? jetPtRec : jetPtGen;
-
- Double_t entriesPt[3] = {jetPt,ptRec,ptGen}; // AliCorrFW convention: gen vs rec
- Double_t entriesZ[3] = {jetPt,zRec,zGen};
- Double_t entriesXi[3] = {jetPt,xiRec,xiGen};
+ if(rectrack){
+ Double_t ptRec = rectrack->Pt();
+
+ Double_t zRec = ptRec / jetPtGen;
+ Double_t xiRec = 0;
+ if(zRec>0) xiRec = TMath::Log(1/zRec);
- hnResponsePt->Fill(entriesPt);
- hnResponseZ->Fill(entriesZ);
- hnResponseXi->Fill(entriesXi);
+ Double_t jetPt = useRecJetPt ? jetPtRec : jetPtGen;
+
+ Double_t entriesPt[3] = {jetPt,ptRec,ptGen}; // AliCorrFW convention: gen vs rec
+ Double_t entriesZ[3] = {jetPt,zRec,zGen};
+ Double_t entriesXi[3] = {jetPt,xiRec,xiGen};
+
+ hnResponsePt->Fill(entriesPt);
+ hnResponseZ->Fill(entriesZ);
+ hnResponseXi->Fill(entriesXi);
+ }
}
}
}
for (Int_t itrack=0; itrack<inputlist->GetSize(); itrack++){
AliVParticle* track = dynamic_cast<AliVParticle*>(inputlist->At(itrack));
-
+ if(!track)continue;
Double_t trackMom[3];
track->PxPyPz(trackMom);
TVector3 track3mom(trackMom);
for (Int_t itrack=0; itrack<inputlist->GetSize(); itrack++)
{
+
AliVParticle* track = dynamic_cast<AliVParticle*>(inputlist->At(itrack));
+ if(!track)continue;
Float_t trackEta = track->Eta();
Float_t trackPhi = track->Phi();
// Estimate jet and background areas
Float_t* areaJet = new Float_t[nCases];
+ memset(areaJet, 0, sizeof(Float_t) * nCases);
Float_t* areaJetLarge = new Float_t[nCases];
+ memset(areaJetLarge, 0, sizeof(Float_t) * nCases);
Float_t areaFull = (fTrackEtaMax-fTrackEtaMin)*(fTrackPhiMax-fTrackPhiMin);
Float_t areaOut = areaFull;
{
// Get jet information
AliAODJet* jet = dynamic_cast<AliAODJet*>(jetlist->At(ij));
+ if(!jet)continue;
TVector3 jet3mom;
jet3mom.SetPtEtaPhi(jet->Pt(),jet->Eta(),jet->Phi());
new((*vect3Jet)[ijet]) TVector3((TVector3)jet3mom);
for (Int_t itrack=0; itrack<inputlist->GetSize(); itrack++){
AliVParticle* track = dynamic_cast<AliVParticle*>(inputlist->At(itrack));
-
+ if(!track)continue;
Double_t trackMom[3];
track->PxPyPz(trackMom);
TVector3 track3mom(trackMom);
{
// Get jet information
AliAODJet* jet = dynamic_cast<AliAODJet*>(jetlist->At(ij));
+ if(!jet)continue;
TVector3 jet3mom;
jet3mom.SetPtEtaPhi(jet->Pt(),jet->Eta(),jet->Phi());
new((*vect3Jet)[ijet]) TVector3((TVector3)jet3mom);
for (Int_t itrack=0; itrack<inputlist->GetSize(); itrack++){
AliVParticle* track = dynamic_cast<AliVParticle*>(inputlist->At(itrack));
-
+ if(!track)continue;
Double_t trackMom[3];
track->PxPyPz(trackMom);
TVector3 track3mom(trackMom);
for(Int_t it=0; it<tracklistperp->GetSize(); ++it){
AliVParticle* trackVP = dynamic_cast<AliVParticle*>(tracklistperp->At(it));
+ if(!trackVP)continue;
TLorentzVector* trackV = new TLorentzVector(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P());
Float_t jetPt = jet->Pt();