X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;ds=sidebyside;f=TPC%2FAliTPCcalibCosmic.cxx;h=aea04cfe3d0552b1e483932efa1f89e295bfc022;hb=a6a61f437e9c5def6ddf646b27d222f78a92419f;hp=c02dd608ac40a83466a0772d2e8b74a7286ab8a5;hpb=3e55050fb2bb067ebf34502adc08c3ed738c3478;p=u%2Fmrichter%2FAliRoot.git diff --git a/TPC/AliTPCcalibCosmic.cxx b/TPC/AliTPCcalibCosmic.cxx index c02dd608ac4..aea04cfe3d0 100644 --- a/TPC/AliTPCcalibCosmic.cxx +++ b/TPC/AliTPCcalibCosmic.cxx @@ -38,10 +38,16 @@ gSystem->AddIncludePath("-I$ALICE_ROOT/TPC/macros"); gROOT->LoadMacro("$ALICE_ROOT/TPC/macros/AliXRDPROOFtoolkit.cxx+") AliXRDPROOFtoolkit tool; - TChain * chainCosmic = tool.MakeChainRandom("cosmic.txt","Track0",0,10000); - + TChain * chainCosmic = tool.MakeChainRandom("cosmicF.txt","Track0",0,10000); + // + TCut cutITSN="min(Orig0.fITSncls,Orig1.fITSncls)>2"; + TCut cutTPCN="min(Orig0.fTPCncls,Orig1.fTPCncls)>120"; -*/ + chainCosmic->Draw(">>listITS",cutITSN+cutTPCN,"entryList"); + TEntryList *elistITS = (TEntryList*)gDirectory->Get("listITS"); + chainCosmic->SetEntryList(elistITS); + + */ @@ -56,6 +62,7 @@ #include "TFile.h" #include "TF1.h" #include "THnSparse.h" +#include "TDatabasePDG.h" #include "AliTPCclusterMI.h" #include "AliTPCseed.h" @@ -74,7 +81,7 @@ #include "AliTPCcalibCosmic.h" #include "TTreeStream.h" #include "AliTPCTracklet.h" -#include "AliESDcosmic.h" +//#include "AliESDcosmic.h" ClassImp(AliTPCcalibCosmic) @@ -201,15 +208,15 @@ void AliTPCcalibCosmic::Init(){ xminTrack[5] =-1; xmaxTrack[5]=1; // axisName[5] ="tan(#theta)"; // - binsTrack[6] =10; - xminTrack[6] =0; xmaxTrack[6]=2; // + binsTrack[6] =40; + xminTrack[6] =-2; xmaxTrack[6]=2; // axisName[6] ="1/pt (1/GeV)"; // binsTrack[7] =40; xminTrack[7] =0.2; xmaxTrack[7]=50; // axisName[7] ="pt (GeV)"; // - binsTrack[8] =32; + binsTrack[8] =18; xminTrack[8] =0; xmaxTrack[8]=TMath::Pi(); // axisName[8] ="alpha"; // @@ -320,9 +327,9 @@ void AliTPCcalibCosmic::Process(AliESDEvent *event) { Printf("ERROR: ESD not available"); return; } - AliESDfriend *ESDfriend=static_cast(event->FindListObject("AliESDfriend")); - if (!ESDfriend) { - Printf("ERROR: ESDfriend not available"); + AliESDfriend *esdFriend=static_cast(event->FindListObject("AliESDfriend")); + if (!esdFriend) { + Printf("ERROR: esdFriend not available"); return; } @@ -333,19 +340,22 @@ void AliTPCcalibCosmic::Process(AliESDEvent *event) { Int_t ntracks=event->GetNumberOfTracks(); fHistNTracks->Fill(ntracks); if (ntracks==0) return; - AliESDcosmic cosmicESD; - TTreeSRedirector * cstream = GetDebugStreamer(); - cosmicESD.SetDebugStreamer(cstream); - cosmicESD.ProcessEvent(event); - if (cstream) cosmicESD.DumpToTree(); + // AliESDcosmic cosmicESD; +// TTreeSRedirector * cstream = GetDebugStreamer(); +// cosmicESD.SetDebugStreamer(cstream); +// cosmicESD.ProcessEvent(event); +// if (cstream) cosmicESD.DumpToTree(); } -void AliTPCcalibCosmic::FillHistoPerformance(AliExternalTrackParam *par0, AliExternalTrackParam *par1, AliExternalTrackParam *inner0, AliExternalTrackParam *inner1, AliTPCseed *seed0, AliTPCseed *seed1){ - // +void AliTPCcalibCosmic::FillHistoPerformance(const AliExternalTrackParam *par0, const AliExternalTrackParam *par1, const AliExternalTrackParam *inner0, const AliExternalTrackParam */*inner1*/, AliTPCseed *seed0, AliTPCseed *seed1, const AliExternalTrackParam *param0Combined ){ // + // par0,par1 - parameter of tracks at DCA 0 + // inner0,inner1 - parameter of tracks at the TPC entrance + // seed0, seed1 - detailed track information + // param0Combined - Use combined track parameters for binning // Int_t kMinCldEdx =20; Int_t ncl0 = seed0->GetNumberOfClusters(); @@ -364,11 +374,11 @@ void AliTPCcalibCosmic::FillHistoPerformance(AliExternalTrackParam *par0, AliExt // bin parameters x[1] = TMath::Min(ncl0,ncl1); x[2] = (radius0+radius1)*0.5; - x[3] = (inner0->GetZ()+inner1->GetZ())*0.5; - x[4] = (inner0->GetSnp()-inner1->GetSnp())*0.5; - x[5] = (inner0->GetTgl()-inner1->GetTgl())*0.5; - x[6] = (1/par0->Pt()+1/par1->Pt())*0.5; - x[7] = (par0->Pt()+par1->Pt())*0.5; + x[3] = param0Combined->GetZ(); + x[4] = inner0->GetSnp(); + x[5] = param0Combined->GetTgl(); + x[6] = param0Combined->GetSigned1Pt(); + x[7] = param0Combined->Pt(); x[8] = alpha; // deltas Double_t delta[6]; @@ -440,7 +450,60 @@ void AliTPCcalibCosmic::FillHistoPerformance(AliExternalTrackParam *par0, AliExt } - +void AliTPCcalibCosmic::MaterialBudgetDump(AliExternalTrackParam *const par0, AliExternalTrackParam *const par1, const AliExternalTrackParam *inner0, const AliExternalTrackParam *inner1, AliTPCseed *const seed0, AliTPCseed *const seed1, AliExternalTrackParam *const param0Combined, AliExternalTrackParam *const param1Combined){ + // + // matrial budget AOD dump + // + // par0,par1 - parameter of tracks at DCA 0 + // inner0,inner1 - parameter of tracks at the TPC entrance + // seed0, seed1 - detailed track information + // param0Combined - Use combined track parameters for binning + // param1Combined - + Double_t p0In = inner0->GetP(); + Double_t p1In = inner1->GetP(); + Double_t p0V = par0->GetP(); + Double_t p1V = par1->GetP(); + // + Double_t pt0In = inner0->Pt(); + Double_t pt1In = inner1->Pt(); + Double_t pt0V = par0->Pt(); + Double_t pt1V = par1->Pt(); + Int_t ncl0 = seed0->GetNumberOfClusters(); + Int_t ncl1 = seed1->GetNumberOfClusters(); + Int_t nclmin=TMath::Min(ncl0,ncl1); + Double_t sign = (param0Combined->GetSigned1Pt()>0) ? 1:-1.; + // + TTreeSRedirector * pcstream = GetDebugStreamer(); + if (pcstream){ + (*pcstream)<<"material"<< + "run="<20) printf("Hallo world: Im here\n"); - AliESDfriend *ESDfriend=static_cast(event->FindListObject("AliESDfriend")); + AliESDfriend *esdFriend=static_cast(event->FindListObject("AliESDfriend")); Int_t ntracks=event->GetNumberOfTracks(); TObjArray tpcSeeds(ntracks); if (ntracks==0) return; @@ -481,9 +544,10 @@ void AliTPCcalibCosmic::FindPairs(AliESDEvent *event) { if (ntracks>4 && TMath::Abs(trackIn->GetTgl())<0.0015) continue; // filter laser - AliESDfriendTrack *friendTrack = ESDfriend->GetTrack(i); + AliESDfriendTrack *friendTrack = esdFriend->GetTrack(i); + if (!friendTrack) continue; TObject *calibObject; - AliTPCseed *seed = 0; + AliTPCseed *seed = 0; for (Int_t l=0;(calibObject=friendTrack->GetCalibObject(l));++l) { if ((seed=dynamic_cast(calibObject))) break; } @@ -495,11 +559,11 @@ void AliTPCcalibCosmic::FindPairs(AliESDEvent *event) { // if (meanP > 0.4 && meanP < 0.45) fDeDxMIP->Fill(seed->CookdEdxNorm(0.0,0.45,0,0,159)); // - if (GetDebugLevel()>0&&meanP>0.2&&seed->CookdEdxNorm(0.0,0.45,0,0,159)>300) { - TFile *curfile = AliAnalysisManager::GetAnalysisManager()->GetTree()->GetCurrentFile(); - if (curfile) printf(">>> p+ in file: %s \t event: %i \t Number of ESD tracks: %i \n", curfile->GetName(), (int)event->GetEventNumberInFile(), (int)ntracks); - if (track->GetOuterParam()->GetAlpha()<0) cout << " Polartiy: " << track->GetSign() << endl; - } + // if (GetDebugLevel()>0&&meanP>0.2&&seed->CookdEdxNorm(0.0,0.45,0,0,159)>300) { +// //TFile *curfile = AliAnalysisManager::GetAnalysisManager()->GetTree()->GetCurrentFile(); +// //if (curfile) printf(">>> p+ in file: %s \t event: %i \t Number of ESD tracks: %i \n", curfile->GetName(), (int)event->GetEventNumberInFile(), (int)ntracks); +// // if (track->GetOuterParam()->GetAlpha()<0) cout << " Polartiy: " << track->GetSign() << endl; +// } } @@ -565,8 +629,11 @@ void AliTPCcalibCosmic::FindPairs(AliESDEvent *event) { // // Propagate using Magnetic field and correct fo material budget // - AliTracker::PropagateTrackTo(¶m0,dmax+1,0.0005,3,kTRUE); - AliTracker::PropagateTrackTo(¶m1,dmax+1,0.0005,3,kTRUE); + Double_t sign0=-1; + Double_t sign1=1; + Double_t maxsnp=0.90; + AliTracker::PropagateTrackToBxByBz(¶m0,dmax+1,TDatabasePDG::Instance()->GetParticle("e-")->Mass(),3,kTRUE,maxsnp,sign0); + AliTracker::PropagateTrackToBxByBz(¶m1,dmax+1,TDatabasePDG::Instance()->GetParticle("e-")->Mass(),3,kTRUE,maxsnp,sign1); // // Propagate rest to the 0,0 DCA - z should be ignored // @@ -606,8 +673,8 @@ void AliTPCcalibCosmic::FindPairs(AliESDEvent *event) { // // // - FillHistoPerformance(¶m0, ¶m1, ip0, ip1, seed0, seed1); - + FillHistoPerformance(¶m0, ¶m1, ip0, ip1, seed0, seed1,par0U); + MaterialBudgetDump(¶m0, ¶m1, ip0, ip1, seed0, seed1,par0U,par1U); if (cstream) { (*cstream) << "Track0" << "run="<Pt() < 10 || upperTrack->GetTPCNcls() < 80) return; - const Double_t AcordePlane = 850.; // distance of the central Acorde detectors to the beam line at y =0 + const Double_t acordePlane = 850.; // distance of the central Acorde detectors to the beam line at y =0 const Double_t roof = 210.5; // distance from x =0 to end of magnet roof Double_t r[3]; @@ -698,16 +765,16 @@ void AliTPCcalibCosmic::FillAcordeHist(AliESDtrack *upperTrack) { Double_t d[3]; upperTrack->GetDirection(d); Double_t x,z; - z = r[2] + (d[2]/d[1])*(AcordePlane - r[1]); - x = r[0] + (d[0]/d[1])*(AcordePlane - r[1]); + z = r[2] + (d[2]/d[1])*(acordePlane - r[1]); + x = r[0] + (d[0]/d[1])*(acordePlane - r[1]); if (x > roof) { - x = r[0] + (d[0]/(d[0]+d[1]))*(AcordePlane+roof-r[0]-r[1]); - z = r[2] + (d[2]/(d[0]+d[1]))*(AcordePlane+roof-r[0]-r[1]); + x = r[0] + (d[0]/(d[0]+d[1]))*(acordePlane+roof-r[0]-r[1]); + z = r[2] + (d[2]/(d[0]+d[1]))*(acordePlane+roof-r[0]-r[1]); } if (x < -roof) { - x = r[0] + (d[0]/(d[1]-d[0]))*(AcordePlane+roof+r[0]-r[1]); - z = r[2] + (d[2]/(d[1]-d[0]))*(AcordePlane+roof+r[0]-r[1]); + x = r[0] + (d[0]/(d[1]-d[0]))*(acordePlane+roof+r[0]-r[1]); + z = r[2] + (d[2]/(d[1]-d[0]))*(acordePlane+roof+r[0]-r[1]); } fModules->Fill(z, x); @@ -716,7 +783,7 @@ void AliTPCcalibCosmic::FillAcordeHist(AliESDtrack *upperTrack) { -Long64_t AliTPCcalibCosmic::Merge(TCollection *li) { +Long64_t AliTPCcalibCosmic::Merge(TCollection *const li) { TIterator* iter = li->MakeIterator(); AliTPCcalibCosmic* cal = 0; @@ -779,11 +846,11 @@ Double_t AliTPCcalibCosmic::CalculateMIPvalue(TH1F * hist) { funcDoubleGaus->SetParameters(hist->GetEntries()*0.75,hist->GetMean()/1.3,hist->GetMean()*0.10, hist->GetEntries()*0.25,hist->GetMean()*1.3,hist->GetMean()*0.10); hist->Fit(funcDoubleGaus); - Double_t MIPvalue = TMath::Min(funcDoubleGaus->GetParameter(1),funcDoubleGaus->GetParameter(4)); + Double_t aMIPvalue = TMath::Min(funcDoubleGaus->GetParameter(1),funcDoubleGaus->GetParameter(4)); delete funcDoubleGaus; - return MIPvalue; + return aMIPvalue; } @@ -799,7 +866,7 @@ void AliTPCcalibCosmic::CalculateBetheParams(TH2F */*hist*/, Double_t * /*initia } -void AliTPCcalibCosmic::BinLogX(THnSparse *h, Int_t axisDim) { +void AliTPCcalibCosmic::BinLogX(THnSparse *const h, Int_t axisDim) { // Method for the correct logarithmic binning of histograms @@ -808,21 +875,21 @@ void AliTPCcalibCosmic::BinLogX(THnSparse *h, Int_t axisDim) { Double_t from = axis->GetXmin(); Double_t to = axis->GetXmax(); - Double_t *new_bins = new Double_t[bins + 1]; + Double_t *newBins = new Double_t[bins + 1]; - new_bins[0] = from; + newBins[0] = from; Double_t factor = pow(to/from, 1./bins); for (int i = 1; i <= bins; i++) { - new_bins[i] = factor * new_bins[i-1]; + newBins[i] = factor * newBins[i-1]; } - axis->Set(bins, new_bins); - delete new_bins; + axis->Set(bins, newBins); + delete [] newBins; } -void AliTPCcalibCosmic::BinLogX(TH1 *h) { +void AliTPCcalibCosmic::BinLogX(TH1 *const h) { // Method for the correct logarithmic binning of histograms @@ -831,16 +898,16 @@ void AliTPCcalibCosmic::BinLogX(TH1 *h) { Double_t from = axis->GetXmin(); Double_t to = axis->GetXmax(); - Double_t *new_bins = new Double_t[bins + 1]; + Double_t *newBins = new Double_t[bins + 1]; - new_bins[0] = from; + newBins[0] = from; Double_t factor = pow(to/from, 1./bins); for (int i = 1; i <= bins; i++) { - new_bins[i] = factor * new_bins[i-1]; + newBins[i] = factor * newBins[i-1]; } - axis->Set(bins, new_bins); - delete new_bins; + axis->Set(bins, newBins); + delete [] newBins; }