X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=TPC%2FAliTPCcalibTimeGain.cxx;h=95c45d54ad45702213241ea422ccb278a62509d6;hb=af8650f9ade7dfb4e95df9bade587d3c4735a6ce;hp=684bd4c6da7382aa5d4a3cc0f015b6aa79627d09;hpb=05c5cecdcf02921326fe2ad190dcdb1c5c3a0415;p=u%2Fmrichter%2FAliRoot.git diff --git a/TPC/AliTPCcalibTimeGain.cxx b/TPC/AliTPCcalibTimeGain.cxx index 684bd4c6da7..95c45d54ad4 100644 --- a/TPC/AliTPCcalibTimeGain.cxx +++ b/TPC/AliTPCcalibTimeGain.cxx @@ -164,6 +164,7 @@ TGaxis *axis = new TGaxis(xmax,ymin,xmax,ymax,ymin,ymax,50510,"+L"); #include "AliTracker.h" #include "AliMagF.h" #include "AliTPCCalROC.h" +#include "AliESDv0.h" #include "AliLog.h" @@ -234,12 +235,12 @@ AliTPCcalibTimeGain::AliTPCcalibTimeGain(const Text_t *name, const Text_t *title Double_t deltaTime = EndTime - StartTime; - // main histogram for time dependence: dE/dx, time, type (1-muon cosmic,2-pion beam data), meanDriftlength, momenta (only filled if enough space is available), run number + // main histogram for time dependence: dE/dx, time, type (1-muon cosmic,2-pion beam data, 3&4 - proton points at higher dE/dx), meanDriftlength, momenta (only filled if enough space is available), run number, eta Int_t timeBins = TMath::Nint(deltaTime/deltaIntegrationTimeGain); - Int_t binsGainTime[6] = {150, timeBins, 2, 25, 200, 10000000}; - Double_t xminGainTime[6] = {0.5, StartTime, 0.5, 0, 0.1, -0.5}; - Double_t xmaxGainTime[6] = { 8, EndTime, 2.5, 250, 50, 9999999.5}; - fHistGainTime = new THnSparseF("HistGainTime","dEdx time dep.;dEdx,time,type,driftlength,momenta,run number;dEdx",6,binsGainTime,xminGainTime,xmaxGainTime); + Int_t binsGainTime[7] = {150, timeBins, 4, 25, 200, 10000000, 20}; + Double_t xminGainTime[7] = {0.5, StartTime, 0.5, 0, 0.1, -0.5, -1}; + Double_t xmaxGainTime[7] = { 8, EndTime, 4.5, 250, 50, 9999999.5, 1}; + fHistGainTime = new THnSparseF("HistGainTime","dEdx time dep.;dEdx,time,type,driftlength,momenta,run number, eta;dEdx",7,binsGainTime,xminGainTime,xmaxGainTime); BinLogX(fHistGainTime, 4); // fHistDeDxTotal = new TH2F("DeDx","dEdx; momentum p (GeV); TPC signal (a.u.)",250,0.01,100.,1000,0.,8); @@ -248,8 +249,8 @@ AliTPCcalibTimeGain::AliTPCcalibTimeGain(const Text_t *name, const Text_t *title // default values for dE/dx fMIP = 50.; fUseMax = kTRUE; - fLowerTrunc = 0.0; - fUpperTrunc = 0.7; + fLowerTrunc = 0.02; + fUpperTrunc = 0.6; fUseShapeNorm = kTRUE; fUsePosNorm = kFALSE; fUsePadNorm = kFALSE; @@ -314,9 +315,10 @@ void AliTPCcalibTimeGain::ProcessCosmicEvent(AliESDEvent *event) { AliESDtrack *track = event->GetTrack(i); if (!track) continue; - + AliESDfriendTrack *friendTrack = esdFriend->GetTrack(i); + if (!friendTrack) continue; const AliExternalTrackParam * trackIn = track->GetInnerParam(); - const AliExternalTrackParam * trackOut = track->GetOuterParam(); + const AliExternalTrackParam * trackOut = friendTrack->GetTPCOut(); if (!trackIn) continue; if (!trackOut) continue; @@ -331,8 +333,6 @@ void AliTPCcalibTimeGain::ProcessCosmicEvent(AliESDEvent *event) { if (TMath::Abs(trackIn->GetSnp()) > 0.6) continue; // Get seeds - AliESDfriendTrack *friendTrack = esdFriend->GetTrack(i); - if (!friendTrack) continue; TObject *calibObject; AliTPCseed *seed = 0; for (Int_t l=0;(calibObject=friendTrack->GetCalibObject(l));++l) { @@ -374,13 +374,15 @@ void AliTPCcalibTimeGain::ProcessBeamEvent(AliESDEvent *event) { // // track loop // - for (Int_t i=0;iGetTrack(i); if (!track) continue; + AliESDfriendTrack *friendTrack = esdFriend->GetTrack(i); + if (!friendTrack) continue; const AliExternalTrackParam * trackIn = track->GetInnerParam(); - const AliExternalTrackParam * trackOut = track->GetOuterParam(); + const AliExternalTrackParam * trackOut = friendTrack->GetTPCOut(); if (!trackIn) continue; if (!trackOut) continue; @@ -391,31 +393,88 @@ void AliTPCcalibTimeGain::ProcessBeamEvent(AliESDEvent *event) { // exclude tracks which do not look like primaries or are simply too short or on wrong sectors if (nclsDeDx < 60) continue; - if (TMath::Abs(trackIn->GetTgl()) > 1) continue; - if (TMath::Abs(trackIn->GetSnp()) > 0.6) continue; + //if (TMath::Abs(trackIn->GetTgl()) > 1) continue; + //if (TMath::Abs(trackIn->GetSnp()) > 0.6) continue; + if (TMath::Abs(trackIn->Eta()) > 1) continue; + UInt_t status = track->GetStatus(); + if ((status&AliESDtrack::kTPCrefit)==0) continue; + if (track->GetNcls(0) < 3) continue; // ITS clusters + Float_t dca[2], cov[3]; + track->GetImpactParameters(dca,cov); + if (dca[0] > 7 || dca[0] < 0.000001) continue; // cut in xy + Double_t eta = trackIn->Eta(); // Get seeds - AliESDfriendTrack *friendTrack = esdFriend->GetTrack(i); - if (!friendTrack) continue; TObject *calibObject; AliTPCseed *seed = 0; for (Int_t l=0;(calibObject=friendTrack->GetCalibObject(l));++l) { if ((seed=dynamic_cast(calibObject))) break; } - if (seed) { + if (seed) { + Int_t particleCase = 0; + if (meanP < 0.5 && meanP > 0.4) particleCase = 2; // MIP pions + if (meanP < 0.57 && meanP > 0.56) particleCase = 3; // protons 1 + if (meanP < 0.66 && meanP > 0.65) particleCase = 4; // protons 2 + // + if (fLowMemoryConsumption && particleCase == 0) continue; + // Double_t tpcSignal = GetTPCdEdx(seed); fHistDeDxTotal->Fill(meanP, tpcSignal); // - if (fLowMemoryConsumption) { - if (meanP > 0.5 || meanP < 0.4) continue; - meanP = 0.45; // set all momenta to one in order to save memory - } - //dE/dx, time, type (1-muon cosmic,2-pion beam data), momenta - Double_t vec[6] = {tpcSignal,time,2,meanDrift,meanP,runNumber}; + //dE/dx, time, type (1-muon cosmic,2-pion beam data, 3&4 protons), momenta, runNumner, eta + Double_t vec[7] = {tpcSignal,time,particleCase,meanDrift,meanP,runNumber, eta}; fHistGainTime->Fill(vec); } + } // end track loop + // + // V0 loop -- in beam events the cosmic part of the histogram is filled with GammaConversions + // + for(Int_t iv0 = 0; iv0 < event->GetNumberOfV0s(); iv0++) { + AliESDv0 * v0 = event->GetV0(iv0); + if (!v0->GetOnFlyStatus()) continue; + if (v0->GetEffMass(0,0) > 0.02) continue; // select low inv. mass + Double_t xyz[3]; + v0->GetXYZ(xyz[0], xyz[1], xyz[2]); + if (TMath::Sqrt(xyz[0]*xyz[0] + xyz[1]*xyz[1]) < 3 || TMath::Sqrt(xyz[0]*xyz[0] + xyz[1]*xyz[1]) > 30) continue; + // + // "loop over daughters" + // + for(Int_t idaughter = 0; idaughter < 2; idaughter++) { // daughter loop + Int_t index = idaughter == 0 ? v0->GetPindex() : v0->GetNindex(); + AliESDtrack * trackP = event->GetTrack(index); + AliESDfriendTrack *friendTrackP = esdFriend->GetTrack(index); + if (!friendTrackP) continue; + const AliExternalTrackParam * trackPIn = trackP->GetInnerParam(); + const AliExternalTrackParam * trackPOut = friendTrackP->GetTPCOut(); + if (!trackPIn) continue; + if (!trackPOut) continue; + // calculate necessary track parameters + Double_t meanP = trackPIn->GetP(); + Double_t meanDrift = 250 - 0.5*TMath::Abs(trackPIn->GetZ() + trackPOut->GetZ()); + Int_t nclsDeDx = trackP->GetTPCNcls(); + // exclude tracks which do not look like primaries or are simply too short or on wrong sectors + if (nclsDeDx < 60) continue; + if (TMath::Abs(trackPIn->GetTgl()) > 1) continue; + // + TObject *calibObject; + AliTPCseed *seed = 0; + for (Int_t l=0;(calibObject=friendTrackP->GetCalibObject(l));++l) { + if ((seed=dynamic_cast(calibObject))) break; + } + if (seed) { + if (fLowMemoryConsumption) { + if (meanP > 0.5 || meanP < 0.4) continue; + meanP = 0.45; // set all momenta to one in order to save memory + } + Double_t tpcSignal = GetTPCdEdx(seed); + //dE/dx, time, type (1-muon cosmic,2-pion beam data), momenta + Double_t vec[6] = {tpcSignal,time,1,meanDrift,meanP,runNumber}; + fHistGainTime->Fill(vec); + } + } + } } @@ -584,7 +643,7 @@ void AliTPCcalibTimeGain::BinLogX(THnSparse *h, Int_t axisDim) { newBins[i] = factor * newBins[i-1]; } axis->Set(bins, newBins); - delete newBins; + delete[] newBins; } @@ -607,7 +666,7 @@ void AliTPCcalibTimeGain::BinLogX(TH1 *h) { newBins[i] = factor * newBins[i-1]; } axis->Set(bins, newBins); - delete newBins; + delete[] newBins; }