]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AliGenInfo.C
Fix fixed-string length bug
[u/mrichter/AliRoot.git] / STEER / AliGenInfo.C
index a26684b22c88520107c50274daa1a09b5a6dbc03..bd8813e93c5a668ba76498a520e454dcbcaf694b 100644 (file)
@@ -23,7 +23,7 @@ Macro to generate comples MC information - used for Comparison later on
 How to use it?
 
 .L $ALICE_ROOT/STEER/AliGenInfo.C+
-AliGenInfoMaker *t = new AliGenInfoMaker("galice.root","genTracks.root",1,0)
+AliGenInfoMaker *t = new AliGenInfoMaker("galice.root","genTracks.root",0,0)
 t->Exec();
 
 */
@@ -202,6 +202,7 @@ AliMCInfo::AliMCInfo()
   fTRDReferences  = new TClonesArray("AliTrackReference",10);
   fTOFReferences  = new TClonesArray("AliTrackReference",10);
   fTRdecay.SetTrack(-1);
+  fCharge = 0;
 }
 
 AliMCInfo::~AliMCInfo()
@@ -440,33 +441,33 @@ void AliGenV0Info::Update(Float_t vertex[3])
   fPointAngleFi = (v[0]*p[0]+v[1]*p[1])/(vnorm2*pnorm2);
   fPointAngleTh = (v[2]*p[2]+vnorm2*pnorm2)/(vnorm3*pnorm3);  
   fPointAngle   = (v[0]*p[0]+v[1]*p[1]+v[2]*p[2])/(vnorm3*pnorm3);
-  Float_t mass1 = fMCd.fMass;
-  Float_t mass2 = fMCm.fMass;
+  Double_t mass1 = fMCd.fMass;
+  Double_t mass2 = fMCm.fMass;
 
   
-  Float_t e1    = TMath::Sqrt(mass1*mass1+
-                             fMCPdr[0]*fMCPdr[0]+
-                             fMCPdr[1]*fMCPdr[1]+
-                             fMCPdr[2]*fMCPdr[2]);
-  Float_t e2    = TMath::Sqrt(mass2*mass2+
+  Double_t e1    = TMath::Sqrt(mass1*mass1+
+                             fMCPd[0]*fMCPd[0]+
+                             fMCPd[1]*fMCPd[1]+
+                             fMCPd[2]*fMCPd[2]);
+  Double_t e2    = TMath::Sqrt(mass2*mass2+
                              fMCPm[0]*fMCPm[0]+
                              fMCPm[1]*fMCPm[1]+
                              fMCPm[2]*fMCPm[2]);
   
   fInvMass =  
-    (fMCPm[0]+fMCPdr[0])*(fMCPm[0]+fMCPdr[0])+
-    (fMCPm[1]+fMCPdr[1])*(fMCPm[1]+fMCPdr[1])+
-    (fMCPm[2]+fMCPdr[2])*(fMCPm[2]+fMCPdr[2]);
+    (fMCPm[0]+fMCPd[0])*(fMCPm[0]+fMCPd[0])+
+    (fMCPm[1]+fMCPd[1])*(fMCPm[1]+fMCPd[1])+
+    (fMCPm[2]+fMCPd[2])*(fMCPm[2]+fMCPd[2]);
   
-  fInvMass = TMath::Sqrt((e1+e2)*(e1+e2)-fInvMass);
+  //  fInvMass = TMath::Sqrt((e1+e2)*(e1+e2)-fInvMass);
+  fInvMass = (e1+e2)*(e1+e2)-fInvMass;
+  if (fInvMass>0) fInvMass = TMath::Sqrt(fInvMass);
 
     
 }
 
 
 
-
-
 /////////////////////////////////////////////////////////////////////////////////
 void AliGenKinkInfo::Update()
 {
@@ -736,7 +737,7 @@ AliGenInfoMaker::AliGenInfoMaker(const char * fnGalice, const char* fnRes,
     cerr<<"restricted number of events availaible"<<endl;
   }
   AliMagF * magf = gAlice->Field();
-  AliTracker::SetFieldMap(magf);
+  AliTracker::SetFieldMap(magf,0);
 }
 
 
@@ -1128,6 +1129,7 @@ Int_t  AliGenInfoMaker::BuildV0Info()
     if (dinfo){
       v0info->fMCm = (*info);
       v0info->fMCd = (*dinfo);
+      v0info->fMotherP = (*motherparticle);
       v0info->Update(fVPrim);
       br->SetAddress(&v0info);    
       fTreeV0->Fill();
@@ -1319,6 +1321,15 @@ Int_t AliGenInfoMaker::TreeTRLoop()
     for (Int_t iTrackRef = 0; iTrackRef < TPCArrayTR->GetEntriesFast(); iTrackRef++) {
       AliTrackReference *trackRef = (AliTrackReference*)TPCArrayTR->At(iTrackRef);            
       //
+      if (trackRef->TestBit(BIT(2))){  
+       //if decay 
+       if (trackRef->P()<fgTPCPtCut) continue;
+       Int_t label = trackRef->GetTrack(); 
+       AliMCInfo * info = GetInfo(label);
+       if (!info) info = MakeInfo(label);
+       info->fTRdecay = *trackRef;      
+      }
+      //
       if (trackRef->P()<fgTPCPtCut) continue;
       Int_t label = trackRef->GetTrack();      
       AliMCInfo * info = GetInfo(label);
@@ -1333,6 +1344,7 @@ Int_t AliGenInfoMaker::TreeTRLoop()
     //
     for (Int_t iTrackRef = 0; iTrackRef < ITSArrayTR->GetEntriesFast(); iTrackRef++) {
       AliTrackReference *trackRef = (AliTrackReference*)ITSArrayTR->At(iTrackRef);            
+      // 
       //
       if (trackRef->P()<fgTPCPtCut) continue;
       Int_t label = trackRef->GetTrack();      
@@ -1421,11 +1433,10 @@ Float_t AliGenInfoMaker::TR2LocalX(AliTrackReference *trackRef,
 
 
 TH1F * AliComparisonDraw::DrawXY(const char * chx, const char *chy, const char* selection, 
-               const char * quality, Int_t nbins, Float_t minx, Float_t maxx, Float_t miny, Float_t maxy)
+               const char * quality, Int_t nbins, Float_t minx, Float_t maxx, Float_t miny, Float_t maxy, Int_t nBinsRes)
 {
   //
   Double_t* bins = CreateLogBins(nbins, minx, maxx);
-  Int_t nBinsRes = 30;
   TH2F* hRes2 = new TH2F("hRes2", "residuals", nbins, minx, maxx, nBinsRes, miny, maxy);
   char cut[1000];
   sprintf(cut,"%s&&%s",selection,quality);
@@ -1444,11 +1455,10 @@ TH1F * AliComparisonDraw::DrawXY(const char * chx, const char *chy, const char*
 }
 
 TH1F * AliComparisonDraw::DrawLogXY(const char * chx, const char *chy, const char* selection, 
-               const char * quality, Int_t nbins, Float_t minx, Float_t maxx, Float_t miny, Float_t maxy)
+                                   const char * quality, Int_t nbins, Float_t minx, Float_t maxx, Float_t miny, Float_t maxy, Int_t nBinsRes)
 {
   //
   Double_t* bins = CreateLogBins(nbins, minx, maxx);
-  Int_t nBinsRes = 30;
   TH2F* hRes2 = new TH2F("hRes2", "residuals", nbins, bins, nBinsRes, miny, maxy);
   char cut[1000];
   sprintf(cut,"%s&&%s",selection,quality);