//
//
-/*
+/*
marian.ivanov@cern.ch
Usage:
-
+
.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,1,0);
+ESDCmpTr *t2 = new ESDCmpTr("genTracks.root","cmpESDTracks.root","galice.root",-1,0,0);
t2->Exec();
//
TCut csec("csec","TMath::Sqrt(MC.fVDist[0]**2+MC.fVDist[1]**2)>0.5");
-
-
-
TCut crec("crec","fReconstructed==1");
TCut cteta1("cteta1","abs(MC.fParticle.Theta()/3.1415-0.5)<0.25");
TCut cteta05("cteta05","abs(MC.fParticle.Theta()/3.1415-0.5)<0.1");
comp.fTree->Draw("fESDTrack.fTRDsignal:MC.fParticle.P()>>dEdx2","fTRDOn&&abs(fPdg)==321&&fTRDtrack.fN>40&&fStatus[2]>1")
comp.fTree->Draw("fESDTrack.fTRDsignal:MC.fParticle.P()>>dEdx3","fTRDOn&&abs(fPdg)==11&&fTRDtrack.fN>40&&fStatus[2]>1")
-comp.fTree->Draw("fESDTrack.fTPCsignal:MC.fParticle.P()>>dEdx0","fTRDOn&&abs(fPdg)==211&&fTRDtrack.fN>40&&abs(fESDTrack.fTRDLabel)==abs(fESDTrack.fTPCLabel)")
-comp.fTree->Draw("fESDTrack.fTPCsignal:MC.fParticle.P()>>dEdx1","fTRDOn&&abs(fPdg)==2212&&fTRDtrack.fN>40&&abs(fESDTrack.fTRDLabel)==abs(fESDTrack.fTPCLabel)")
-comp.fTree->Draw("fESDTrack.fTPCsignal:MC.fParticle.P()>>dEdx2","fTRDOn&&abs(fPdg)==321&&fTRDtrack.fN>40&&abs(fESDTrack.fTRDLabel)==abs(fESDTrack.fTPCLabel)")
-comp.fTree->Draw("fESDTrack.fTPCsignal:MC.fParticle.P()>>dEdx3","fTRDOn&&abs(fPdg)==11&&fTRDtrack.fN>40&&abs(fESDTrack.fTRDLabel)==abs(fESDTrack.fTPCLabel)")
-
+comp.fTree->Draw("fESDTrack.fTPCsignal:fTPCinP0[4]>>dEdx0","fTPCOn&&abs(fPdg)==211&&fESDTrack.fTPCncls>180&&fESDTrack.fTPCsignal>10"+cteta1);
+comp.fTree->Draw("fESDTrack.fTPCsignal:fTPCinP0[4]>>dEdx1","fTPCOn&&abs(fPdg)==2212&&fESDTrack.fTPCncls>180&&fESDTrack.fTPCsignal>10"+cteta1);
+comp.fTree->Draw("fESDTrack.fTPCsignal:fTPCinP0[4]>>dEdx2","fTPCOn&&abs(fPdg)==321&&fESDTrack.fTPCncls>180&&fESDTrack.fTPCsignal>10"+cteta1);
+comp.fTree->Draw("fESDTrack.fTPCsignal:fTPCinP0[4]>>dEdx3","fTPCOn&&abs(fPdg)==11&&fESDTrack.fTPCncls>180&&fESDTrack.fTPCsignal>10"+cteta1);
+hdedx3->SetXTitle("P(GeV/c)");
+hdedx3->SetYTitle("dEdx(unit)");
hdedx3->Draw(); hdedx1->Draw("same"); hdedx2->Draw("same"); hdedx0->Draw("same");
comp.DrawXY("fITSinP0[3]","fITSPools[4]","fReconstructed==1&&fPdg==-211&&fITSOn"+cprim,"1",4,0.2,1.0,-8,8)
#include "AliTPCParamSR.h"
#include "AliTracker.h"
#include "AliComplexCluster.h"
-#include "AliMagF.h"
-#include "AliESD.h"
+#include "AliESDEvent.h"
#include "AliESDtrack.h"
#include "AliITStrackMI.h"
#include "AliTRDtrack.h"
#include "AliESDVertex.h"
#include "AliExternalTrackParam.h"
#include "AliESDkink.h"
-#include "AliESDV0MI.h"
+#include "AliESDv0.h"
#endif
#include "AliGenInfo.h"
-TCut cprim("cprim","TMath::Sqrt(MC.fVDist[0]**2+MC.fVDist[1]**2)<0.01&&abs(MC.fVDist[2])<0.01");
-TCut citsin("citsin","TMath::Sqrt(MC.fVDist[0]**2+MC.fVDist[1]**2)<5");
-TCut csec("csec","TMath::Sqrt(MC.fVDist[0]**2+MC.fVDist[1]**2)>0.5");
-TCut crec("crec","fReconstructed==1");
-TCut cteta1("cteta1","abs(MC.fParticle.Theta()/3.1415-0.5)<0.25");
-TCut cteta05("cteta05","abs(MC.fParticle.Theta()/3.1415-0.5)<0.1");
-
-TCut cpos1("cpos1","abs(MC.fParticle.fVz/sqrt(MC.fParticle.fVx*MC.fParticle.fVx+MC.fParticle.fVy*MC.fParticle.fVy))<1");
-TCut csens("csens","abs(sqrt(fVDist[0]**2+fVDist[1]**2)-170)<50");
-TCut cmuon("cmuon","abs(MC.fParticle.fPdgCode==-13)");
-TCut cchi2("cchi2","fESDTrack.fITSchi2MIP[0]<7.&&fESDTrack.fITSchi2MIP[1]<5.&&fESDTrack.fITSchi2MIP[2]<7.&&fESDTrack.fITSchi2MIP[3]<7.5&&fESDTrack.fITSchi2MIP[4]<6.");
-
void MakeAliases(AliESDComparisonDraw&comp)
//
//
-void AliESDRecInfo::Update(AliMCInfo* info,AliTPCParam * /*par*/, Bool_t reconstructed)
+void AliESDRecInfo::Update(AliMCInfo* info,AliTPCParam * /*par*/, Bool_t reconstructed, AliESDEvent *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]);
}
- Double_t cov[15], param[5],x;
+ Double_t cov[15], param[5],x, alpha;
fESDTrack.GetInnerExternalCovariance(cov);
- fESDTrack.GetInnerExternalParameters(x,param);
+ fESDTrack.GetInnerExternalParameters(alpha, x,param);
if (x<50) return ;
//
fTPCDelta[0] = (fTPCinR0[4]-fTPCinR1[4])*fTPCinR1[3]; //delta rfi
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(cov[14]);
+ fTPCPools[4] = sign*(1./fTPCinP0[3]-1./fTPCinP1[3])/TMath::Sqrt(TMath::Abs(cov[14]));
}
if (fITSOn){
// ITS
if (fDist2<10.5){
Double_t x,alpha,param[5],cov[15];
//
- fT1.fESDTrack.GetInnerExternalParameters(x,param);
+ fT1.fESDTrack.GetInnerExternalParameters(alpha,x,param);
fT1.fESDTrack.GetInnerExternalCovariance(cov);
- alpha = fT1.fESDTrack.GetInnerAlpha();
AliExternalTrackParam paramm(x,alpha,param,cov);
//
- fT2.fESDTrack.GetInnerExternalParameters(x,param);
+ fT2.fESDTrack.GetInnerExternalParameters(alpha,x,param);
fT2.fESDTrack.GetInnerExternalCovariance(cov);
- alpha = fT2.fESDTrack.GetInnerAlpha();
AliExternalTrackParam paramd(x,alpha,param,cov);
}
//
if (fDist2<10.5){
Double_t x,alpha,param[5],cov[15];
//
- fT1.fESDTrack.GetInnerExternalParameters(x,param);
+ fT1.fESDTrack.GetInnerExternalParameters(alpha,x,param);
fT1.fESDTrack.GetInnerExternalCovariance(cov);
- alpha = fT1.fESDTrack.GetInnerAlpha();
AliExternalTrackParam paramm(x,alpha,param,cov);
//
- fT2.fESDTrack.GetInnerExternalParameters(x,param);
+ fT2.fESDTrack.GetInnerExternalParameters(alpha,x,param);
fT2.fESDTrack.GetInnerExternalCovariance(cov);
- alpha = fT2.fESDTrack.GetInnerAlpha();
AliExternalTrackParam paramd(x,alpha,param,cov);
/*
AliESDkink kink;
//
fLoader = AliRunLoader::Open(fnGalice);
if (gAlice){
- //delete gAlice->GetRunLoader();
+ //delete AliRunLoader::Instance();
delete gAlice;
gAlice = 0x0;
}
fEventNr = nall-firstEvent;
cerr<<"restricted number of events availaible"<<endl;
}
- AliMagF * magf = gAlice->Field();
- AliTracker::SetFieldMap(magf);
}
//
TTree* tree = (TTree*) f.Get("esdTree");
- if (!tree) {
- Char_t ename[100];
- sprintf(ename,"%d",eventNr);
- fEvent = (AliESD*)f.Get(ename);
- if (!fEvent){
- sprintf(ename,"ESD%d",eventNr);
- fEvent = (AliESD*)f.Get(ename);
- }
- }
- else{
- tree->SetBranchAddress("ESD", &fEvent);
- tree->GetEntry(eventNr);
- }
+ if(fEvent)delete fEvent;
+ fEvent = new AliESDEvent();
+ fEvent->ReadFromTree(tree);
+ tree->GetEntry(eventNr);
+
/*
fRecInfo = new AliESDRecInfo;
AliESDtrack * esdTrack = new AliESDtrack;
// AliITStrackMI * itsTrack = new AliITStrackMI;
- fTreeCmp->Branch("MC","AliMCInfo",&fMCInfo);
- fTreeCmp->Branch("RC","AliESDRecInfo",&fRecInfo);
+ fTreeCmp->Branch("MC","AliMCInfo",&fMCInfo,256000);
+ fTreeCmp->Branch("RC","AliESDRecInfo",&fRecInfo,256000);
// fTreeCmp->Branch("fESDTrack","AliESDtrack",&esdTrack);
// fTreeCmp->Branch("ITS","AliITStrackMI",&itsTrack);
delete esdTrack;
fTreeCmpKinks = new TTree("ESDcmpKinks","ESDcmpKinks");
fGenKinkInfo = new AliGenKinkInfo;
fRecKinkInfo = new AliESDRecKinkInfo;
- fTreeCmpKinks->Branch("MC.","AliGenKinkInfo",&fGenKinkInfo);
- fTreeCmpKinks->Branch("RC.","AliESDRecKinkInfo",&fRecKinkInfo);
+ fTreeCmpKinks->Branch("MC.","AliGenKinkInfo",&fGenKinkInfo,256000);
+ fTreeCmpKinks->Branch("RC.","AliESDRecKinkInfo",&fRecKinkInfo,256000);
//
//
fTreeCmpV0 = new TTree("ESDcmpV0","ESDcmpV0");
fGenV0Info = new AliGenV0Info;
fRecV0Info = new AliESDRecV0Info;
- fTreeCmpV0->Branch("MC.","AliGenV0Info", &fGenV0Info);
- fTreeCmpV0->Branch("RC.","AliESDRecV0Info",&fRecV0Info);
+ fTreeCmpV0->Branch("MC.","AliGenV0Info", &fGenV0Info,256000);
+ fTreeCmpV0->Branch("RC.","AliESDRecV0Info",&fRecV0Info,256000);
//
fTreeCmp->AutoSave();
fTreeCmpKinks->AutoSave();
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]);
TBranch * branch = fTreeCmp->GetBranch("RC");
branch->SetAddress(&fRecInfo); // set all pointers
fRecArray = new TObjArray(fNParticles);
+ AliESDtrack dummytrack; //
while (entry < nParticlesTR) {
fTreeGenTracks->GetEntry(entry);
}
}
//
- 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(x,param);
- fRecV0Info->fT1.fESDTrack.GetInnerExternalCovariance(cov);
- alpha = fRecV0Info->fT1.fESDTrack.GetInnerAlpha();
- AliExternalTrackParam paramP(x,alpha,param,cov);
- //
- fRecV0Info->fT2.fESDTrack.GetInnerExternalParameters(x,param);
- fRecV0Info->fT2.fESDTrack.GetInnerExternalCovariance(cov);
- alpha = fRecV0Info->fT2.fESDTrack.GetInnerAlpha();
- 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=0;j<TMath::Min(fMultiRecV0s[label],100);j++){
for (Int_t j=TMath::Min(fMultiRecV0[label],Short_t(20))-1;j>=0;j--){
Int_t index = fIndexRecV0[label*20+j];
- AliESDV0MI *v0MI2 = fEvent->GetV0MI(index);
+ if (index<0) continue;
+ 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;
fTreeCmpV0->AutoSave();
- fRecArray->Delete();
printf("Time spended in BuilV0Info Loop\n");
timer.Print();
if (fDebug > 2) cerr<<"end of BuildV0Info Loop"<<endl;