.L $ALICE_ROOT/STEER/AliGenInfo.C+
//be sure you created genTracks file before
.L $ALICE_ROOT/STEER/AliESDComparisonMI.C+
-
//
ESDCmpTr *t2 = new ESDCmpTr("genTracks.root","cmpESDTracks.root","galice.root",-1,0,0);
t2->Exec();
#include "AliESDVertex.h"
#include "AliExternalTrackParam.h"
#include "AliESDkink.h"
-#include "AliESDV0MI.h"
+#include "AliESDv0.h"
#endif
#include "AliGenInfo.h"
//
//
-void AliESDRecInfo::Update(AliMCInfo* info,AliTPCParam * /*par*/, Bool_t reconstructed)
+void AliESDRecInfo::Update(AliMCInfo* info,AliTPCParam * /*par*/, Bool_t reconstructed, AliESD *event)
{
//
//
fStatus[1] =2;
}
else{
- fStatus[1]=1;
+ if ((fESDTrack.GetStatus()&AliESDtrack::kTPCin)>0)
+ fStatus[1]=1;
}
}
//
fTPCinP1[4] = TMath::Sqrt(fTPCinP1[3]*fTPCinP1[3]+fTPCinP1[2]*fTPCinP1[2]);
//
//
- if (fTPCinP1[3]>0.0000001){
+ if (fTPCinP1[3]>0.000000000000001){
fTPCAngle1[0] = TMath::ATan2(fTPCinP1[1],fTPCinP1[0]);
fTPCAngle1[1] = TMath::ATan(fTPCinP1[2]/fTPCinP1[3]);
}
fTPCDelta[4] = (fTPCinP0[3]-fTPCinP1[3]);
Double_t sign = (param[4]>0)? 1.:-1;
fSign =sign;
- fTPCPools[4] = sign*(1./fTPCinP0[3]-1./fTPCinP1[3])/TMath::Sqrt(TMath::Abs(cov[14]));
+ fTPCPools[4] = sign*(1./fTPCinP0[3]-1./fTPCinP1[3])/TMath::Sqrt(TMath::Abs(cov[14]));
}
if (fITSOn){
// ITS
Float_t x[3] = { trackRef->X(),trackRef->Y(),trackRef->Z()};
Int_t index[4];
paramTPC->Transform0to1(x,index);
- paramTPC->Transform1to2(x,index);
+ paramTPC->Transform1to2Ideal(x,index);
return TVector3(x);
}
////////////////////////////////////////////////////////////////////////
//
Int_t nEntries = (Int_t)fEvent->GetNumberOfTracks();
Int_t nKinks = (Int_t) fEvent->GetNumberOfKinks();
- Int_t nV0MIs = (Int_t) fEvent->GetNumberOfV0MIs();
+ Int_t nV0MIs = (Int_t) fEvent->GetNumberOfV0s();
fSignedKinks = new Short_t[nKinks];
fSignedV0 = new Short_t[nV0MIs];
//
}
//
for (Int_t i=0; i<nV0MIs;i++){
- AliESDV0MI * v0MI =fEvent->GetV0MI(i);
+ AliESDv0 * v0MI =fEvent->GetV0(i);
fSignedV0[i]=0;
if (v0MI->fStatus<0) continue;
}
}
// --sort reconstructed V0
//
- AliESDV0MI * v0MI=0;
+ AliESDv0 * v0MI=0;
for (Int_t iEntry=0; iEntry<nV0MIs;iEntry++){
- v0MI = fEvent->GetV0MI(iEntry);
+ v0MI = fEvent->GetV0(iEntry);
if (!v0MI) continue;
//
// Int_t label0 = TMath::Abs(v0MI->fLab[0]);
timer.Start();
Int_t entry = fNextTreeGenEntryToRead;
Double_t nParticlesTR = fTreeGenTracks->GetEntriesFast();
- AliESDtrack dummytrack;
cerr<<"fNParticles, nParticlesTR, fNextTreeGenEntryToRead: "<<fNParticles<<" "
<<nParticlesTR<<" "<<fNextTreeGenEntryToRead<<endl;
TBranch * branch = fTreeCmp->GetBranch("RC");
branch->SetAddress(&fRecInfo); // set all pointers
fRecArray = new TObjArray(fNParticles);
+ AliESDtrack dummytrack; //
while (entry < nParticlesTR) {
fTreeGenTracks->GetEntry(entry);
}
}
//
- if (!track) track = &dummytrack;
- fRecInfo->fESDTrack =*track;
+ if (track) {
+ new (&(fRecInfo->fESDTrack)) AliESDtrack(*track);
+ }else{
+ fRecInfo->fESDTrack = dummytrack;
+ }
+
if (track->GetITStrack())
fRecInfo->fITStrack = *((AliITStrackMI*)track->GetITStrack());
else{
fRecInfo->fFake = fFakeRecTracks[fMCInfo->fLabel];
fRecInfo->fMultiple = fMultiRecTracks[fMCInfo->fLabel];
//
- fRecInfo->Update(fMCInfo,fParamTPC,kTRUE);
+ fRecInfo->Update(fMCInfo,fParamTPC,kTRUE, fEvent);
}
else{
- fRecInfo->Update(fMCInfo,fParamTPC,kFALSE);
+ fRecInfo->fESDTrack = dummytrack;
+ fRecInfo->Update(fMCInfo,fParamTPC,kFALSE, fEvent);
}
fRecArray->AddAt(new AliESDRecInfo(*fRecInfo),fMCInfo->fLabel);
fTreeCmp->Fill();
//
// TPC V0 Info
Double_t x,alpha, param[5],cov[15];
- fRecV0Info->fT1.fESDTrack.GetInnerExternalParameters(alpha,x,param);
- fRecV0Info->fT1.fESDTrack.GetInnerExternalCovariance(cov);
- AliExternalTrackParam paramP(x,alpha,param,cov);
- //
- fRecV0Info->fT2.fESDTrack.GetInnerExternalParameters(alpha,x,param);
- fRecV0Info->fT2.fESDTrack.GetInnerExternalCovariance(cov);
- AliExternalTrackParam paramM(x,alpha,param,cov);
- //
- fRecV0Info->fV0tpc.SetM(paramM);
- fRecV0Info->fV0tpc.SetP(paramP);
- Double_t pid1[5],pid2[5];
- fRecV0Info->fT1.fESDTrack.GetESDpid(pid1);
- fRecV0Info->fT1.fESDTrack.GetESDpid(pid2);
- //
- fRecV0Info->fV0tpc.UpdatePID(pid1,pid2);
- fRecV0Info->fV0tpc.Update(vertex);
- //
- //
- fRecV0Info->fT1.fESDTrack.GetExternalParameters(x,param);
- fRecV0Info->fT1.fESDTrack.GetExternalCovariance(cov);
- alpha = fRecV0Info->fT1.fESDTrack.GetAlpha();
- new (¶mP) AliExternalTrackParam(x,alpha,param,cov);
- //
- fRecV0Info->fT2.fESDTrack.GetExternalParameters(x,param);
- fRecV0Info->fT2.fESDTrack.GetExternalCovariance(cov);
- alpha = fRecV0Info->fT2.fESDTrack.GetAlpha();
- new (¶mM) AliExternalTrackParam(x,alpha,param,cov);
- //
- fRecV0Info->fV0its.SetM(paramM);
- fRecV0Info->fV0its.SetP(paramP);
- fRecV0Info->fV0its.UpdatePID(pid1,pid2);
- fRecV0Info->fV0its.Update(vertex);
-
+ if ( fRecV0Info->fT1.fESDTrack.GetInnerParam() && fRecV0Info->fT2.fESDTrack.GetInnerParam()){
+ fRecV0Info->fT1.fESDTrack.GetInnerExternalParameters(alpha,x,param);
+ fRecV0Info->fT1.fESDTrack.GetInnerExternalCovariance(cov);
+ AliExternalTrackParam paramP(x,alpha,param,cov);
+ //
+ fRecV0Info->fT2.fESDTrack.GetInnerExternalParameters(alpha,x,param);
+ fRecV0Info->fT2.fESDTrack.GetInnerExternalCovariance(cov);
+ AliExternalTrackParam paramM(x,alpha,param,cov);
+ //
+ fRecV0Info->fV0tpc.SetM(paramM);
+ fRecV0Info->fV0tpc.SetP(paramP);
+ Double_t pid1[5],pid2[5];
+ fRecV0Info->fT1.fESDTrack.GetESDpid(pid1);
+ fRecV0Info->fT1.fESDTrack.GetESDpid(pid2);
+ //
+ fRecV0Info->fV0tpc.UpdatePID(pid1,pid2);
+ fRecV0Info->fV0tpc.Update(vertex);
+
+ //
+ //
+ fRecV0Info->fT1.fESDTrack.GetExternalParameters(x,param);
+ fRecV0Info->fT1.fESDTrack.GetExternalCovariance(cov);
+ alpha = fRecV0Info->fT1.fESDTrack.GetAlpha();
+ new (¶mP) AliExternalTrackParam(x,alpha,param,cov);
+ //
+ fRecV0Info->fT2.fESDTrack.GetExternalParameters(x,param);
+ fRecV0Info->fT2.fESDTrack.GetExternalCovariance(cov);
+ alpha = fRecV0Info->fT2.fESDTrack.GetAlpha();
+ new (¶mM) AliExternalTrackParam(x,alpha,param,cov);
+ //
+ fRecV0Info->fV0its.SetM(paramM);
+ fRecV0Info->fV0its.SetP(paramP);
+ fRecV0Info->fV0its.UpdatePID(pid1,pid2);
+ fRecV0Info->fV0its.Update(vertex);
+ }
}
if (TMath::Abs(fGenV0Info->fMCm.fPdg)==11 &&TMath::Abs(fGenV0Info->fMCd.fPdg)==11){
if (fRecV0Info->fDist2>10){
Int_t label = TMath::Min(fGenV0Info->fMCm.fLabel,fGenV0Info->fMCd.fLabel);
Int_t label2 = TMath::Max(fGenV0Info->fMCm.fLabel,fGenV0Info->fMCd.fLabel);
- AliESDV0MI *v0MI=0;
+ AliESDv0 *v0MI=0;
fRecV0Info->fRecStatus =0;
fRecV0Info->fMultiple = fMultiRecV0[label];
fRecV0Info->fV0Multiple=0;
for (Int_t j=TMath::Min(fMultiRecV0[label],Short_t(20))-1;j>=0;j--){
Int_t index = fIndexRecV0[label*20+j];
if (index<0) continue;
- AliESDV0MI *v0MI2 = fEvent->GetV0MI(index);
+ AliESDv0 *v0MI2 = fEvent->GetV0(index);
if (TMath::Abs(v0MI2->fLab[0])==label &&TMath::Abs(v0MI2->fLab[1])==label2) {
v0MI =v0MI2;
fRecV0Info->fV0Multiple++;
//
// write fake v0s
- Int_t nV0MIs = fEvent->GetNumberOfV0MIs();
+ Int_t nV0MIs = fEvent->GetNumberOfV0s();
for (Int_t i=0;i<nV0MIs;i++){
if (fSignedV0[i]==0){
- AliESDV0MI *v0MI = fEvent->GetV0MI(i);
+ AliESDv0 *v0MI = fEvent->GetV0(i);
if (!v0MI) continue;
//
fRecV0Info->fV0rec = *v0MI;